C# - Converter List<T> para DataTable - II


Neste artigo veremos como converter uma lista genérica tipada para um DataTable na linguagem C#.

Na primeira parte do artigo já convertemos a lista tipada para um DataTable e para completar veremos como selecionar um item do DataGridView e exibir em outro formulário do projeto.

Inclua um novo formulário Form2 no projeto para exibir os detalhes do Produto selecionado.

Neste formulário inclua os controles:

Vamos passar os dados do produto selecionado no DataGridView do formulário Form1 para o Form2 via construtor do formulário.

Assim o formulário Form2 vai receber o código do produto e vai usar o método GetProdutoCodigo() da classe DataService para obter o produto. 

A seguir, usando o método PopulaForm() os dados são exibidos no formulário:

    public partial class Form2 : Form
    {

        Produto produto;

        public Form2(int codigo)
        {
            InitializeComponent();
            produto = DataService.getProdutoCodigo(codigo-1);
            PopulaForm(produto);
        }
        private void PopulaForm(Produto produto)
        {
            txtCodigo.Text = produto.ProdutoId.ToString();
            txtNome.Text = produto.Nome;
            txtPreco.Text = produto.Preco.ToString(); 
        }
    }

Agora para completar vamos definir o código no formulário Form1 que seleciona o produto.

Vamos usar o evento CellDoubleClick do DataGridView, e, assim basta o usuário clicar duas vezes no item do grid que deseja exibir.

Obtemos o código do item da lista, que é o valor da primeira célula da linha, e a seguir criamos uma instãncia de Form2() passando o código do produto:

 private void DgvDados_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
  {
            int codigo = (int)dgvDados.Rows[e.RowIndex].Cells[0].Value;
            Form2 frm2 = new Form2(codigo);
            frm2.Show();
  }

Executando o projeto teremos o seguinte resultado:

Vemos assim a lista de objetos Produto sendo exibida no DataGridView após ser convertida para um DataTable e a seleção do usuário exibindo os detalhes do produto no formulário Form2.

Pegue o código completo do projeto aqui: WF_Lista_DataTable.zip

"Amo ao SENHOR, porque ele ouviu a minha voz e a minha súplica.
Porque inclinou a mim os seus ouvidos; portanto, o invocarei enquanto viver."
Salmos 116:1,2

Referências:


José Carlos Macoratti