How to find the index of a Datarow by the value of a Datatable column

Asked

Viewed 71 times

0

I have a difficulty regarding the combobox, I need to set a specific value for visualization, as if it were the function of visualization of an existing record, the value will be in the variable that I passed as parameter to the function; after feeding the combobox.

private void PreencherDados(Produto produto)
        {
            edtCodigo.Text = produto.Codigo.ToString();
            edtDescricao.Text = produto.Descricao.ToString();

            GruposNegocio gruposNegocio = new GruposNegocio(null);
            cbGrupo.Items.Clear();

           /*Alimentacao combobox, conforme o retorno do banco de dados*/
            foreach (DataRow item in gruposNegocio.Pesquisar().Rows)
            {
                Grupos grupos = new Grupos();
                grupos.Codigo = Convert.ToDouble(item["CODIGO"].ToString());
                grupos.Descricao = item["DESCRICAO"].ToString();
                cbGrupo.Items.Add(grupos);
            }

/* Neste momento preciso coletar o valor que vem da variavel produto.descrição, e setar o index da mesma no combobox*/

            cbGrupo.SelectedIndex = ;
        }

1 answer

0


I don’t think it makes sense to search for an item by its description instead of its code... as well as the mapping of DataTable for the combo box could be made more practical... But follows an example using the indexOf(), it is no longer clear what the class structure is like Grupos.

private void PreencherDados(Produto produto)
{
    edtCodigo.Text = produto.Codigo.ToString();
    edtDescricao.Text = produto.Descricao.ToString();

    GruposNegocio gruposNegocio = new GruposNegocio(null);
    cbGrupo.Items.Clear();

    var dataTable = gruposNegocio.Pesquisar();


    foreach (DataRow item in dataTable.Rows)
    {
        Grupos grupos = new Grupos();
        grupos.Codigo = Convert.ToDouble(item["CODIGO"].ToString());
        grupos.Descricao = item["DESCRICAO"].ToString();
        cbGrupo.Items.Add(grupos);
    }

    cbGrupo.SelectedIndex = dataTable
        .Rows
        .IndexOf(dataTable.Select($"DESCRICAO = '{produto.Descricao}'").ToList().FirstOrDefault() ?? 0);
}

Browser other questions tagged

You are not signed in. Login or sign up in order to post.