none
Como adicionar uma linha num DataGridView em C# RRS feed

  • Pergunta

  • É o seguinte, estou desenvolvendo um pequeno sistema em C# usando Windows Forms, ele é desktop e usa banco de dados SQL Server. Minha duvida é a seguinte: Tenho uma tela de vendas com o "DataGridViewVendas", quando eu clico no botão "Add Produto", abro um novo pequeno form com um campo de pesquisa e um "DataGridViewAddProduto", clico em pesquisar, vejo os neste "DataGridViewAddProduto" os produtos cadastrados, clico em um e clico no botão "Inserir Produto" ele pede uma confirmação se deseja inserir aquele produto mesmo. Ao clicar no botão "Sim", o pequeno form com o campo de pesquisa e o "DataGridViewAddProduto" fecha e automaticamente, é para aparecer no "DataGridViewVendas" o produto que foi inserido, ou seja, quero passar um produto do "DataGridViewAddProduto" para o "DataGridViewVendas" e, caso o usuario deseje inserir novos produtos, ele pode, vai no pequeno form com o "DataGridViewAddProduto", escolhe outro produto, insere, fecha o pequeno form e volta pra tela de vendas com o produto adicionado no "DataGridViewVendas", ai nisso já teremos 2 linhas no "DataGridViewVendas". Minha duvida é como fazer essa passagem de produtos de um grid para outro. Consegui algo proximo da seguinte forma: Ao clicar em "Sim", p/ inserir o produto, o FrmVendas tem um um get;set; de id_produto, o FrmVendasAddProduto passa o id_produto para o FrmVendas que faz uma consulta no banco e aparece no grid o produto, mas isso é apenas visual eu acho, não funciona direito, ao inserir um novo produto ele perde o anterior e tal. Gostaria de saber a maneira correta de fazer o que eu desejo. Sou um desenvolvedor Junior, estou começando agora a desenvolver, não tenho tantos conhecimentos e por isso, todos os topicos que eu vi na internet não consegui entender. Obrigado!
    quinta-feira, 8 de setembro de 2016 16:20

Respostas

  • Olá Grabriel 

    Você pode fazer da seguinte forma:

    Primeiro você cria um método para pegar o produto, sugiro que vc use um checkbox para verifica qual os produtos que suários esta escolhendo, você pode seguir este como exemplo:

    private DataGridViewRow adicionar(DataGridViewRow row)
                {
                
                    DataGridViewRow newRow = (DataGridViewRow)row.Clone();
                    newRow.Cells[1].Value = row.Cells[1].Value;
                    newRow.Cells[2].Value = row.Cells[2].Value;
                    newRow.Cells[3].Value = row.Cells[3].Value;
                    newRow.Cells[4].Value = row.Cells[4].Value;
                    newRow.Cells[5].Value = row.Cells[5].Value;
                    newRow.Cells.Remove(newRow.Cells[0]);
                    return newRow;
     
                }            
     

    Depois no botão adicionar vc pode usar esse método que vai adicionar no outro datagrid:

     foreach (DataGridViewRow row in dataGridView1.Rows)
                {
                    
                    produtoDataGridView.Rows.Add(adicionar(row));
     
                }

    • Marcado como Resposta GabrieelQueiroz sábado, 10 de setembro de 2016 17:47
    quinta-feira, 8 de setembro de 2016 20:39

Todas as Respostas

  • Olá Grabriel 

    Você pode fazer da seguinte forma:

    Primeiro você cria um método para pegar o produto, sugiro que vc use um checkbox para verifica qual os produtos que suários esta escolhendo, você pode seguir este como exemplo:

    private DataGridViewRow adicionar(DataGridViewRow row)
                {
                
                    DataGridViewRow newRow = (DataGridViewRow)row.Clone();
                    newRow.Cells[1].Value = row.Cells[1].Value;
                    newRow.Cells[2].Value = row.Cells[2].Value;
                    newRow.Cells[3].Value = row.Cells[3].Value;
                    newRow.Cells[4].Value = row.Cells[4].Value;
                    newRow.Cells[5].Value = row.Cells[5].Value;
                    newRow.Cells.Remove(newRow.Cells[0]);
                    return newRow;
     
                }            
     

    Depois no botão adicionar vc pode usar esse método que vai adicionar no outro datagrid:

     foreach (DataGridViewRow row in dataGridView1.Rows)
                {
                    
                    produtoDataGridView.Rows.Add(adicionar(row));
     
                }

    • Marcado como Resposta GabrieelQueiroz sábado, 10 de setembro de 2016 17:47
    quinta-feira, 8 de setembro de 2016 20:39
  • Precisei modificar uma variável e uma instancia pra fazer funcionar corretamente e usei sua dica pra montar a estrutura correta. Obrigado.
    sábado, 10 de setembro de 2016 17:49