Somar Valores de uma coluna do GridView
Em windowsForm, o gridview tem a coluna "Valor" que preciso somar e mostrar em um textbox o total.
O gridview é da tabela "ItensLocação" e a coluna "Valor", é um combobox que traz o valor da tabela "Livros", pela junção do ID...
Tenho o código abaixo que funciona, mas o problema é que está somando o ID e não o valor mostrado na linha da coluna "Valor"...
Aqui está a configuração do combobox :
[img]http://arquivo.devmedia.com.br/forum/imagem/343353-20150216-181254.png[/img]
E aqui o grid, para melhor entendimento :
[img]http://arquivo.devmedia.com.br/forum/imagem/343353-20150216-181322.png[/img]
Se alguém puder ajudar, agradeço Muito!
O gridview é da tabela "ItensLocação" e a coluna "Valor", é um combobox que traz o valor da tabela "Livros", pela junção do ID...
Tenho o código abaixo que funciona, mas o problema é que está somando o ID e não o valor mostrado na linha da coluna "Valor"...
private decimal valorLoc() { decimal total = 0; int i = 0; for (i = 0; i < itemLocacaoDataGridView.Rows.Count; i++) { total = total + Convert.ToDecimal(itemLocacaoDataGridView.Rows[i].Cells[2].Value); } return total; } private void calculaValor() { if (itemLocacaoDataGridView.Rows.Count > 0) valorLocacaoTextBox.Text = valorLoc().ToString("N"); }
Aqui está a configuração do combobox :
[img]http://arquivo.devmedia.com.br/forum/imagem/343353-20150216-181254.png[/img]
E aqui o grid, para melhor entendimento :
[img]http://arquivo.devmedia.com.br/forum/imagem/343353-20150216-181322.png[/img]
Se alguém puder ajudar, agradeço Muito!
Jair Souza
Curtidas 0
Melhor post
Joel Rodrigues
23/02/2015
Ué, se a coluna é de valor, por que ela está ligada no campo ID? O erro aí é esse.
GOSTEI 1
Mais Respostas
Joel Rodrigues
16/02/2015
Tente referenciar a coluna pelo nome ao invés de pelo índice.
GOSTEI 0
Jair Souza
16/02/2015
Foi a minha primeira tentativa, mas dá este erro :
[img]http://arquivo.devmedia.com.br/forum/imagem/343353-20150221-203720.png[/img]
"Coluna não pode ser encontrado"
[img]http://arquivo.devmedia.com.br/forum/imagem/343353-20150221-203720.png[/img]
"Coluna não pode ser encontrado"
GOSTEI 0
Joel Rodrigues
16/02/2015
Que viagem, cara. Só agora vi na imagem que a coluna Valor na verdade está ligada ao campo IDLivro, por isso está somando o ID.
GOSTEI 0
Jair Souza
16/02/2015
Pois é...será que tem jeito ??
GOSTEI 0
Jair Souza
16/02/2015
Desculpe a falta de conhecimento.
Este grid é da tabela "ItemLocacao" e o preço está na tabela "Livro", o que fiz foi transformar o textbox em combobox para trazer o preço...
Errei na lógica, no raciocínio ?
Não pode ser assim ?
Este grid é da tabela "ItemLocacao" e o preço está na tabela "Livro", o que fiz foi transformar o textbox em combobox para trazer o preço...
Errei na lógica, no raciocínio ?
Não pode ser assim ?
GOSTEI 0
Joel Rodrigues
16/02/2015
Ao invés de fazer dessa forma, faça o select direto usando join e exiba direto na coluna o valor, assim o Value será o valor desejado.
GOSTEI 1
Jair Souza
16/02/2015
Funcionou e ficou assim no query builder:
SELECT ItemLocacao.IDItem, ItemLocacao.IDLocacao, ItemLocacao.IDLivro, ItemLocacao.IDLocatario, ItemLocacao.IDFuncionario, ItemLocacao.[Data de Devolucao],
ItemLocacao.Obs1, ItemLocacao.Obs2, ItemLocacao.Obs3, Livro.[Valor Locacao]
FROM ((ItemLocacao INNER JOIN Locacao ON Locacao.IDLocacao = ItemLocacao.IDLocacao) INNER JOIN Livro ON Livro.IDLivro = ItemLocacao.IDLivro)
WHERE (Locacao.IDLocacao = ?)
No código chamo assim :
E assim faz o cálculo :
E chamo o método "calculaValor();" conforme a regra de negócio do projeto, neste caso na hora da inclusão do livro.
Este é o resultado em designer :
[img]http://arquivo.devmedia.com.br/forum/imagem/343353-20150308-105140.png[/img]
Valeu Joel, e muito !
SELECT ItemLocacao.IDItem, ItemLocacao.IDLocacao, ItemLocacao.IDLivro, ItemLocacao.IDLocatario, ItemLocacao.IDFuncionario, ItemLocacao.[Data de Devolucao],
ItemLocacao.Obs1, ItemLocacao.Obs2, ItemLocacao.Obs3, Livro.[Valor Locacao]
FROM ((ItemLocacao INNER JOIN Locacao ON Locacao.IDLocacao = ItemLocacao.IDLocacao) INNER JOIN Livro ON Livro.IDLivro = ItemLocacao.IDLivro)
WHERE (Locacao.IDLocacao = ?)
No código chamo assim :
this.itemLocacaoTableAdapter.FillByIDLocacao(this.bDBibliotecaDataSet.ItemLocacao, Convert.ToInt32(iDLocacaoTextBox.Text));
E assim faz o cálculo :
private decimal valorLoc() { decimal total = 0; int i = 0; for (i = 0; i < itemLocacaoDataGridView.Rows.Count; i++) { total = total + Convert.ToDecimal(itemLocacaoDataGridView.Rows[i].Cells[2].Value); } return total; } private void calculaValor() { if (itemLocacaoDataGridView.Rows.Count > 0) valorLocacaoTextBox.Text = valorLoc().ToString("N"); }
E chamo o método "calculaValor();" conforme a regra de negócio do projeto, neste caso na hora da inclusão do livro.
Este é o resultado em designer :
[img]http://arquivo.devmedia.com.br/forum/imagem/343353-20150308-105140.png[/img]
Valeu Joel, e muito !
GOSTEI 0