Validate that a row is not repeated within a DataTable

0

Good day I am developing an application where I need to show in a DataGriView the result of a query to know which users have permissions to different documents , when I charge the DataGrid shows me in screen the permissions of each user as CheckBox in which I can grant or remove permissions , so I must replace the default values by YES or NO according to the privileges of each user , only when I copy the values already modified in a new DataTable I duplicate the first row and it does not allow me to save the others, for which I would appreciate if you can support me by telling me how to validate that a row does not repeat within a DataTable , I attach the developed code.

public void CargarGridUsuarios()
{
    try
    {
        int IdUsuario = 0;
        DataTable dtDocumentosUsuarios = new DataTable();
        DataTable dtDocumentosUsuarios1 = new DataTable();
        DataTable dtResultado = new DataTable();
        DataRow drDocumentos = dtDocumentosUsuarios1.NewRow();
        IdUsuario = Convert.ToInt32(cmbUsuarios.SelectedValue);
        string Codigo = "";
        string Documento = "";
        string Leer1="";
        string Modificar1="";
        string Imprimir1="";
        string Eliminar1="";
        string Leer = "";
        string Modificar = "";
        string Imprimir = "";
        string Eliminar = "";
        if (cmbUsuarios.SelectedValue!=null)
        {
            if (IdUsuario!=0)
            {
                dtDocumentosUsuarios = objUsuarios.DocumentosUsario(IdUsuario);
                if (dtDocumentosUsuarios.Rows.Count!=0)
                {
                    dtDocumentosUsuarios1.Columns.Add("Codigos");
                    dtDocumentosUsuarios1.Columns.Add("Documetos");
                    dtDocumentosUsuarios1.Columns.Add("Permiso Leer");
                    dtDocumentosUsuarios1.Columns.Add("Permiso Modificar");
                    dtDocumentosUsuarios1.Columns.Add("Permiso Imprimir");
                    dtDocumentosUsuarios1.Columns.Add("Permiso Eliminar");
                    foreach (DataRow drDocumentosUsuarios in dtDocumentosUsuarios.Rows)
                    {
                        Codigo = Convert.ToString(drDocumentosUsuarios[0]);
                        Documento = Convert.ToString(drDocumentosUsuarios[1]);
                        Leer1 = Convert.ToString(drDocumentosUsuarios[2]);
                        Modificar1 = Convert.ToString(drDocumentosUsuarios[3]);
                        Imprimir1 = Convert.ToString(drDocumentosUsuarios[4]);
                        Eliminar1 = Convert.ToString(drDocumentosUsuarios[5]);
                        if (Leer1 =="True"  && Modificar1 == "True" && Imprimir1 == "True" && Eliminar1 == "True")
                        {
                            Leer = "SI";
                            Modificar = "SI";
                            Imprimir = "SI";
                            Eliminar = "SI";
                        }
                        else
                        {
                            Leer = "NO";
                            Modificar = "NO";
                            Imprimir = "NO";
                            Eliminar = "NO";
                        }
                        drDocumentos["Codigos"] = Codigo;
                        drDocumentos["Documetos"] = Documento;
                        drDocumentos["Permiso Leer"] = Leer;
                        drDocumentos["Permiso Modificar"] = Modificar;
                        drDocumentos["Permiso Imprimir"] = Imprimir;
                        drDocumentos["Permiso Eliminar"] = Eliminar;
                        dtDocumentosUsuarios1.Rows.Add(drDocumentos);
                    }
                    dtResultado = dtDocumentosUsuarios1;
                }
            }
        }
    }
    catch (Exception ex)
    {
        ex.ToString();
    }
}
    
asked by Alberto Arenas 09.06.2017 в 15:16
source

1 answer

1

You can optimize code and it will probably help you declare the DataRow after the foreach.

public void CargarGridUsuarios()
    {
        try
        {
            int IdUsuario = 0;
            DataTable dtDocumentosUsuarios = new DataTable();
            DataTable dtDocumentosUsuarios1 = new DataTable();
           // DataTable dtResultado = new DataTable();
           // DataRow drDocumentos = dtDocumentosUsuarios1.NewRow();
            IdUsuario = Convert.ToInt32(cmbUsuarios.SelectedValue);
            if (cmbUsuarios.SelectedValue != null)
            {
                if (IdUsuario != 0)
                {
                    dtDocumentosUsuarios = objUsuarios.DocumentosUsario(IdUsuario);
                    if (dtDocumentosUsuarios.Rows.Count != 0)
                    {
                        foreach (DataRow drDocumentosUsuarios in dtDocumentosUsuarios.Rows)
                        {
                            DataRow drDocumentos = dtDocumentosUsuarios1.NewRow();
                            dtDocumentosUsuarios1.Columns.Add("Codigos");
                            dtDocumentosUsuarios1.Columns.Add("Documetos");
                            dtDocumentosUsuarios1.Columns.Add("Permiso Leer");
                            dtDocumentosUsuarios1.Columns.Add("Permiso Modificar");
                            dtDocumentosUsuarios1.Columns.Add("Permiso Imprimir");
                            dtDocumentosUsuarios1.Columns.Add("Permiso Eliminar");
                            drDocumentos["Codigos"] = Convert.ToString(drDocumentosUsuarios[0]);
                            drDocumentos["Documetos"] = Convert.ToString(drDocumentosUsuarios[1]);
                            drDocumentos["Permiso Leer"] = Convert.ToString(drDocumentosUsuarios[2]) == "true" ? "SI" : "NO";
                            drDocumentos["Permiso Modificar"] = Convert.ToString(drDocumentosUsuarios[3]) == "true" ? "SI" : "NO";
                            drDocumentos["Permiso Imprimir"] = Convert.ToString(drDocumentosUsuarios[4]) == "true" ? "SI" : "NO";
                            drDocumentos["Permiso Eliminar"] = Convert.ToString(drDocumentosUsuarios[5]) == "true" ? "SI" : "NO";
                            dtDocumentosUsuarios1.Rows.Add(drDocumentos);
                        }
                    }
                }
            }
        }
        catch (Exception ex)
        {
            ex.ToString();
        }
    }
    
answered by 09.06.2017 / 17:39
source