none
Somar linha marcadas por CheckBox em datagrid C# RRS feed

  • Pergunta

  • bem estou com um duvida em meu datagrid! tenho o segui-te datagrid


    o valor toral do textbox teria que dar 92,00 Porque temos so 4 CheckBox marcado mais não da sa é 472,00

    ele soma a coluna toda como poderia fazer para somar apenas os Checkbox marcado?


    terça-feira, 22 de abril de 2014 11:47

Respostas

Todas as Respostas

  • Olá,

    você está executando a soma em algum evento do grid ou click de um botão?

    Wennder Santos

    terça-feira, 22 de abril de 2014 12:10
  • a soma esta em um botão ...

    terça-feira, 22 de abril de 2014 12:13
  • Olá veja se este bloco de código lhe ajuda :

     double soma = 0;
    
                foreach (DataGridViewRow row in dataGridView1.Rows)
                {
                    //celula com checkbox
                    if ((bool)row.Cells[0].Value)
                    {
                        //faco a soma com o q esta selecionado
                        soma += (double)row.Cells[2].Value;
                    }
                }
    
                MessageBox.Show(soma.ToString());

    terça-feira, 22 de abril de 2014 12:40
  • deu o seguinte erro

    fiz dessa forma e apertei o botão

     

    e deu o erro!!!

    terça-feira, 22 de abril de 2014 13:31
  • Estranho ! Deveria funcionar use o Convert Double :

    soma += Convert.ToDouble(row.Cells[1].Value);
    Talvez seja a virgula mas deveria funcionar pela imagem pois o tipo da celula 1 é um número double pelo que há na imagem, mas veja assim que tem que funcionar se o datagrid é igual ao da imagem.

    terça-feira, 22 de abril de 2014 13:51
  • agora o erro deu na cellula do checkbox 

    e quando eu boto o codigo anterior que foi o q vc mim passo primeiro passa agora com o atual que foi o ultimo que vc mim passou da o erro acima!!!

    terça-feira, 22 de abril de 2014 14:10
  • Olá, vou tentar lhe explicar o que ocorre o motivo destes erros vamos lá :

    - quando vc le uma linha de seu datagrid e faz a leitura de valor de uma celula qualquer por exemplo

    -row.Cells[2].Value este Value retorna o tipo object com isso vc deve passar esse object para o tipo desejado especificando o tipo usando cast (double) nesse caso ele tentaria o cast para double ou (string) msma coisa tentaria converter de object para string ! 

    O que está acontecendo é que o tipo que vc tenta converter não está sendo válido ! Ou seja ele não conseguiu converter de object para bool ! Tente usar o Convert.ToBoolean().....

    O mais importante é entender como funciona esse cast de tipos que vc vai solucionar rapidamente esses erros e conversões !

    Se fizer isso :

    if (Convert.ToBoolean(row.Cells[0].Value))
                    {
    
                    }

    E mesmo assim o erro persistir vc verá usando debug que o tipo na coluna 0 não pode ser convertido para boolean e vai lhe gerar um erro em tempo de execução ! 

    Mas deve funcionar desse modo ! Mas tente entender como funciona essas conversões.

    terça-feira, 22 de abril de 2014 14:22
  • parceiro tem so um problema eu botei o codigo em CellMouseClick do datagrid 

    conforme o codigo a baixo:

        private void dataGridView1_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e)
            {
                double soma = 0;
                foreach (DataGridViewRow row in dataGridView1.Rows)
                {
    
                    if (Convert.ToBoolean(row.Cells[0].Value))
                    {
                        soma += Convert.ToDouble(row.Cells[9].Value);
    
                    }
    
                    textBox4.Text = soma.ToString("N2");
                }
            }      
    }

    so q quando eu clico na primeira parcela da coluna do Checkbox ele so soma depois que eu mudo para a segundo e eu queria q ele somar-se erra quando eu clica-se logo não na saída!

    aguardo...

    quarta-feira, 23 de abril de 2014 18:58
  • Olá eu respondi uma dúvida igual a essa ! Aqui veja :

    • Marcado como Resposta Rhael_Andrade quarta-feira, 23 de abril de 2014 20:10
    quarta-feira, 23 de abril de 2014 19:10
  • minha duvida eu acho q nao é bem essa do link q vc mim passou parceiro!!!

    se eu marca parcela 1 e a parcela 2 e aperta no Botão ele soma normal agora eu não quero botão quero que quando eu aperta no checkbox da coluna ele somar mais não estou conseguindo aguado...

    quarta-feira, 23 de abril de 2014 19:51
  • Então creio que sim, execute o exemplo que está no link, pq o que acontece que ele só faz o calculo quando vc muda de celula isso ocorre pq vc tem que dar um EndEdit e necessita manipular o evento CellMouseUp para que ele entenda que vc soltou o mouse isso significa que vc selecionou tal checkbox...
    quarta-feira, 23 de abril de 2014 20:06
  • deu certo parceio fiz o codigo com o link q vc mim passou valeu ai!!!

    quarta-feira, 23 de abril de 2014 20:11
  • Posta seu código aqui como ficou brother.
    quarta-feira, 20 de dezembro de 2017 17:56