Array
(
    [0] => stdClass Object
        (
            [Votos_Balanceados] => 1
            [id] => 511680
            [titulo] => Somar Valores de uma coluna do GridView
            [dataCadastro] => DateTime Object
                (
                    [date] => 2015-02-23 16:53:32
                    [timezone_type] => 3
                    [timezone] => America/Sao_Paulo
                )

            [isFirstPost] => -1
            [idUsuario] => 232232
            [status] => A
            [isExample] => 
            [NomeUsuario] => Joel Rodrigues
            [Apelido] => 
            [Foto] => 232232_20161017163010.jpg
            [Conteudo] => Ué, se a coluna é de valor, por que ela está ligada no campo ID? O erro aí é esse.
        )

)

Somar Valores de uma coluna do GridView

Jair Souza
   - 16 fev 2015

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"...
#Códigoprivate 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 :
Clique na imagem para abrir em uma nova janela
E aqui o grid, para melhor entendimento :
Clique na imagem para abrir em uma nova janela
Se alguém puder ajudar, agradeço Muito!

Post mais votado

Joel Rodrigues
   - 23 fev 2015

Ué, se a coluna é de valor, por que ela está ligada no campo ID? O erro aí é esse.

Joel Rodrigues
   - 20 fev 2015

Tente referenciar a coluna pelo nome ao invés de pelo índice.

Jair Souza
   - 21 fev 2015

Foi a minha primeira tentativa, mas dá este erro :

Clique na imagem para abrir em uma nova janela

"Coluna não pode ser encontrado"

Joel Rodrigues
   - 23 fev 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.

Jair Souza
   - 23 fev 2015

Pois é...será que tem jeito ??

Jair Souza
   - 23 fev 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 ?

Joel Rodrigues
   - 23 fev 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.

Jair Souza
   - 08 mar 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 :

#Códigothis.itemLocacaoTableAdapter.FillByIDLocacao(this.bDBibliotecaDataSet.ItemLocacao, Convert.ToInt32(iDLocacaoTextBox.Text));

E assim faz o cálculo :

#Códigoprivate 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 :

Clique na imagem para abrir em uma nova janela

Valeu Joel, e muito !