Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Gustavuh

Inserir linha no datagridview a cada select feito

Recommended Posts

Saudações.

Tenho uma consulta de cada produto, a cada consulta é retornado um produto e jogado no datagridview.

Só que meu problema está ai, na primeira consulta ele traz certinho, quando faço a segunda ele sobrescreve a consulta anterior.

Quero com que a cada consulta, ele vá inserindo o produto no datagriview.

abaixo segue o meu codigo, faço o projeto em tres camadas.

if (e.KeyCode == Keys.Enter)
{
dgvItemVenda.DataSource = objProdutoBO.selecionarUmProduto(txtCodProduto.Text);
}

9ufdTd.png

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então. na lógica você deve ir adicionado itens a uma lista em memoria e depois utiliza essa lista para preencher o datagrid.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso mesmo, essa é a lógica. Fassim:

 

try
{
var obj = objProdutoBO.selecionarUmProduto(Convert.ToInt64(txtCodProduto.Text));
objLista.Add(obj);
dgvItemVenda.DataSource = objLista;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
mas no datagridview tá aparecendo
40WpFx.png
Sabe o que possa ser esse erro, moderador?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde GustavuH.

 

Isso está ocorrendo pois você recebe um objeto preenchido com um unico valor e joga direto para o seu datagrid.Ai que está o seu erro.

 

sempre que for inserir uma informação no datagrid tem que inserir uma nova linha.

Te aconselho resgatar essas informações em variaveis e ir preenchendo o data grid de coluna a coluna.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Conseguir fazer de um mode diferente, ele está adicionando porem duplicadamente.

 

Segue o código:

 

private DataTable dt = null;

 

public void criarDataTable()
{
dt = new DataTable();
DataColumn dc;
dc = new DataColumn();
dc.ColumnName = "ID";
dc.DataType = typeof(int);
dc.AutoIncrement = true;
dc.AutoIncrementSeed = 1;
dc.AutoIncrementStep = 1;
dt.Columns.Add(dc);
dc = new DataColumn();
dc.DataType = Type.GetType("System.String");
dc.ColumnName = "codigoproduto";
dt.Columns.Add(dc);
dc = new DataColumn();
dc.DataType = Type.GetType("System.String");
dc.ColumnName = "descricao";
dt.Columns.Add(dc);
dc = new DataColumn();
dc.DataType = Type.GetType("System.String");
dc.ColumnName = "medida";
dt.Columns.Add(dc);
dc = new DataColumn();
dc.DataType = Type.GetType("System.String");
dc.ColumnName = "valorunit";
dt.Columns.Add(dc);
dc = new DataColumn();
dc.DataType = Type.GetType("System.String");
dc.ColumnName = "pontosproduto";
dt.Columns.Add(dc);
}
private void txtCodProduto_KeyDown(object sender, KeyEventArgs e)
{
DataRow dr;
Produto itemProduto;
if (e.KeyCode == Keys.Enter)
{
try
{
Npgsql.NpgsqlConnection con = new Npgsql.NpgsqlConnection();
con.ConnectionString = @"";
con.Open();
StringBuilder sb = new StringBuilder();
sb.Append("SELECT codigoproduto, descricao, medida, valorUnit, pontosProduto FROM Produto WHERE codigoProduto = " + txtCodProduto.Text);
Npgsql.NpgsqlCommand cmd = new Npgsql.NpgsqlCommand(sb.ToString(), con);
Npgsql.NpgsqlDataAdapter da = new Npgsql.NpgsqlDataAdapter(cmd);
da.Fill(dt);
itemProduto = new Produto();
dr = dt.NewRow();
dr["codigoproduto"] = itemProduto._codigoProduto;
dr["descricao"] = itemProduto._descricao;
dr["medida"] = itemProduto._medida;
dr["valorunit"] = itemProduto._valorUnit;
dr["pontosproduto"] = itemProduto._pontosProduto;
dt.Rows.Add(dr);
dgvItemVenda.DataSource = dt;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
nKEUUw.png
alguma luz de onde está o erro pra não duplicar mais?

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.