none
Populando uma Label com o dado de uma coluna do DataGrid. RRS feed

  • Pergunta

  • Olá. Estou criando uma aplicação em WPF e tenho o seguinte problema.

    Tenho um DataGrid com 3 colunas (Tipo, Nome, Documento) e uma Label que pretendo popular com um item de uma das colunas daquela DataGrid quando eu clico em um botão.

                                                                   

    private void btnVisualizar_Click(object sender, RoutedEventArgs e)
            {
                if (gridLista.SelectedItem != null)
                {
                    DataRowView dr = gridLista.SelectedItem as DataRowView;
                    string entrada = dr["nome"].ToString();
                    DataGrid dg = new DataGrid();
                    dg.DataContext = controller.Visualizar(entrada);

                    lblNome.Content = ***** (aqui que eu travei e não consegui implementar);

                }

    }

    Obs: Na linha 8, ( dg.DataContext = controller.Visualizar(entrada); ), esse controller faz a pesquisa no Banco de Dados cujo parâmetro é a  "string entrada". Já testei e retorna os dados desejados.

    Por gentileza, quem puder me ajudar a implementar o "lblNome.Content = ", onde o dados desejado é da coluna "nome".

    Ou outra forma de retornar o dado que eu desejo para uma label.


    sábado, 28 de maio de 2022 00:09

Respostas

  • Consegui!

    Implementei da seguinte forma:

    private void btnVisualizar_Click(object sender, RoutedEventArgs e)
            {
                if (gridLista.SelectedItem != null)
                {
                    DataRowView dr = gridLista.SelectedItem as DataRowView;
                    string entrada = dr["nome"].ToString();
                    DataGrid dg = new DataGrid();
                    dg.DataContext = controller.Visualizar(entrada);               

                   DataTable dt = (DataTable)dg.DataContext;

                    lblTipo.Content = dt.Rows[0][0].ToString();
                    lblNome.Content = dt.Rows[0][1].ToString();
                    lblDoc.Content = dt.Rows[0][2].ToString();  

                }

    }

    Se alguém tiver outras dicas para melhorar esse código.

    • Marcado como Resposta BuzzoEduardo sábado, 28 de maio de 2022 20:14
    sábado, 28 de maio de 2022 19:32

Todas as Respostas

  • no evento CellDoubleClick do DataGridView

    label1.Text = DataGrid.CurrentRow.Cells["nome"].Value.ToString();

    ficaria assim

    private void DataGrid_CellDoubleClick(object sender, DataGridViewCellEventArgs e)

    {

                    label1.Text = DataGrid.CurrentRow.Cells["nome"].Value.ToString();
    }

    Caso usar um botao

    seria assim

    if (DataGrid.Rows.Count > 0)
                {
                    label1.Text = DataGrid.CurrentRow.Cells["nome"].Value.ToString();
                }
                else
                    MessageBox.Show("Escolha uma fila na Lista do Grid para editar.");

    se te ajudou marque como resposta, um abraço.


    Titodj7




    • Editado Titodj7 sábado, 28 de maio de 2022 16:05
    sábado, 28 de maio de 2022 15:51
  • Obrigado pela atenção e retorno, mas estou utilizando WPF e não Windows Forms. 

    O problema é que não consigo instanciar um comando para chamar o valor de uma coluna do DataGrid no meu Label, após clicar em um botão.

    lblNome.Content = (aqui que encontrei o problema) 

    Já tentei várias formas, mas não chego num resultado.

    sábado, 28 de maio de 2022 17:10
  • não manjo nada de wpf.

    talves isti te ajude

    Pegar item da Datagrid WPF

    Usando a DataGrid WPF

    WPF - Usando o Componente DataGrid


    Titodj7

    sábado, 28 de maio de 2022 19:26
  • Consegui!

    Implementei da seguinte forma:

    private void btnVisualizar_Click(object sender, RoutedEventArgs e)
            {
                if (gridLista.SelectedItem != null)
                {
                    DataRowView dr = gridLista.SelectedItem as DataRowView;
                    string entrada = dr["nome"].ToString();
                    DataGrid dg = new DataGrid();
                    dg.DataContext = controller.Visualizar(entrada);               

                   DataTable dt = (DataTable)dg.DataContext;

                    lblTipo.Content = dt.Rows[0][0].ToString();
                    lblNome.Content = dt.Rows[0][1].ToString();
                    lblDoc.Content = dt.Rows[0][2].ToString();  

                }

    }

    Se alguém tiver outras dicas para melhorar esse código.

    • Marcado como Resposta BuzzoEduardo sábado, 28 de maio de 2022 20:14
    sábado, 28 de maio de 2022 19:32