Somatoria de valores de um datagridview
13/11/2008
0
Bom dia a todos. Possuo uma aplicação utilizando Windows Forms, feita em Visual Studio 2005, em C#. O modelo utilizado é o desconectado, com dataset tipado. Nesta aplicação possuo uma venda, nesta venda possuo um datagridview com os seguintes campos da tabela ITENS: IDPRODUTO, DESCRICAO, QTDE, VALOR, SUBTOTAL. O campo SUBTOTALnasce da QTDE X PRECO.
Abaixo deste datagridview possuo um textbox TOTAL ligado a tabela VENDA, este textbox deve receber o valor da somatória do SUBTOTAL dos ITENS toda vez que eu mudar de linha, e caso eu exclua alguma linha estes valores serão recalculados. Só que não consigo totalizar este campo.
Alguém sabe a resposta para isso?
Obrigado.
Claudio Stein Junior
Abaixo deste datagridview possuo um textbox TOTAL ligado a tabela VENDA, este textbox deve receber o valor da somatória do SUBTOTAL dos ITENS toda vez que eu mudar de linha, e caso eu exclua alguma linha estes valores serão recalculados. Só que não consigo totalizar este campo.
Alguém sabe a resposta para isso?
Obrigado.
Claudio Stein Junior
Frostlost
Curtir tópico
+ 0
Responder
Posts
16/11/2008
Codename.v
O que você está utlizando como ´data source´ neste controle DataGridView de intens da venda???
O correto é você ter um objeto do tipo List por exemplo para preencher esse controle DataGridView e trabalhar em cima deste List utilizando o DataGridView apenas para exibir os dados.
Sendo assim, você teria uma variável local total que guardaria a soma de todos dados do campo subtotal do List cada vez que um novo item for inserido.
Para isso você poderia utilizar um foreach...
Exemplo:
O correto é você ter um objeto do tipo List por exemplo para preencher esse controle DataGridView e trabalhar em cima deste List utilizando o DataGridView apenas para exibir os dados.
Sendo assim, você teria uma variável local total que guardaria a soma de todos dados do campo subtotal do List cada vez que um novo item for inserido.
Para isso você poderia utilizar um foreach...
Exemplo:
List<Iten> itens = new List<Iten>(); decimal total = 0; private void AdicionaItem() { Iten i = new Iten(); i.Codigo = 1; i.Nome = "Nome do Produto"; i.Quantidade = 2; i.Valor = 10; i.SubTotal = i.Quantidade * i.Valor; itens.Add(i); foreach(Iten iten in itens) { total += iten.SubTotal; } dataGridView1.DataSource = itens; textBoxTotal.Text = total.ToString(); }
Responder
17/11/2008
Frostlost
Valeu, funcionou e consegui desse jeito tb:
Abraços
private void itensVendaDataGridView_CellValidated(object sender, DataGridViewCellEventArgs e) { string preco; double subtotal; // a celula 0 é o nrvenda - com visible false // a celula 1 é o idproduto, a 2 o preco, a 3 a quantidade, // a 4 o subtotal if ((itensVendaDataGridView.CurrentCell.ColumnIndex == 1)) { itensVendaDataGridView.CurrentRow.Cells[2].Value = "0"; itensVendaDataGridView.CurrentRow.Cells[3].Value = "1"; this.produto1TableAdapter.Fill(this.vendaVideoDataSet.Produto1, Convert.ToInt32(itensVendaDataGridView.CurrentRow.Cells[1].Value)); foreach (DataRow dr in vendaVideoDataSet.Tables[4].Rows) { preco = dr[1].ToString(); itensVendaDataGridView.CurrentRow.Cells[2].Value = preco; } } if ((itensVendaDataGridView.CurrentCell.ColumnIndex == 2) || (itensVendaDataGridView.CurrentCell.ColumnIndex == 3)) { double n1 = Convert.ToDouble(itensVendaDataGridView.CurrentRow.Cells[2].Value); double n2 = Convert.ToDouble(itensVendaDataGridView.CurrentRow.Cells[3].Value); subtotal = n1 * n2; itensVendaDataGridView.CurrentRow.Cells[4].Value = subtotal; double total; total = 0; foreach (DataGridViewRow data in itensVendaDataGridView.Rows) { total = total + Convert.ToDouble(data.Cells[4].Value); } totalTextBox.Text = total.ToString(); } }
Abraços
O que você está utlizando como ´data source´ neste controle DataGridView de intens da venda???
O correto é você ter um objeto do tipo List por exemplo para preencher esse controle DataGridView e trabalhar em cima deste List utilizando o DataGridView apenas para exibir os dados.
Sendo assim, você teria uma variável local total que guardaria a soma de todos dados do campo subtotal do List cada vez que um novo item for inserido.
Para isso você poderia utilizar um foreach...
Exemplo:
List<Iten> itens = new List<Iten>(); decimal total = 0; private void AdicionaItem() { Iten i = new Iten(); i.Codigo = 1; i.Nome = "Nome do Produto"; i.Quantidade = 2; i.Valor = 10; i.SubTotal = i.Quantidade * i.Valor; itens.Add(i); foreach(Iten iten in itens) { total += iten.SubTotal; } dataGridView1.DataSource = itens; textBoxTotal.Text = total.ToString(); }
Responder
Clique aqui para fazer login e interagir na Comunidade :)