none
somar coluna em datagrid com checkbox ticado RRS feed

  • Pergunta

  • Bom dia!

    Amigos estou com um probleminha, tenho a seguinte situação:

    Tenho um datagridview populado atraves de um select no banco de dados, me tras os dados assim (coluna B e VALOR) a coluna a eu adicionei manualmente como sendo checkbox

    A            B      VALOR
    [ ]         joao    100
    [ ]        pedro  200

    o que quero...

    que quando ticar o checkbox da ele me da um total

    TextBoxTOTAL = (soma dos checkbox marcados)

    mas ta dificil... estou fazendo mas ele ta somando tudo...

                            double valor = 0;
                            foreach (DataGridViewRow linha in dgvItens.Rows)
                            {
                                valor += Convert.ToDouble(linha.Cells[4].Value);
                            }
                            lblTotal.Text = valor.ToString();

    se alguem puder me ajudar...

    obrigado

    tiago

    sexta-feira, 30 de setembro de 2016 15:10

Todas as Respostas

  • Se não me engano o teste que devera ser feito na coluna que tem o checkbox é se é true ou false, creio que você tera que usar o evento click da grid ou cellclick

    double valor = 0;
    foreach (DataGridViewRow linha in dgvItens.Rows)
      {
         if(Convert.ToBoolean(linha.Cells[4].Value) == true)
         {
            valor += Convert.ToDouble(linha.Cells[4].Value);
         }
      }
    lblTotal.Text = valor.ToString();


    Junior

    sexta-feira, 30 de setembro de 2016 15:15
  • amigo infelismente nao funcionou

    sexta-feira, 30 de setembro de 2016 17:31
  • Fiz um exemplo carregando o GridView na mão e criando as colunas também ná mão... Tem vários detalhes nesse código, você pode copiar e executar em um projeto teste, é funcional, inclusive que ao clicar no checkbox
    private void Form1_Load(object sender, EventArgs e)
    {
    	var check1 = new DataGridViewCheckBoxColumn(true);
    	check1.ThreeState = false;            
    
    	dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
    	dataGridView1.Columns.Add(check1);
    	dataGridView1.Columns.Add(new DataGridViewTextBoxColumn());
    	dataGridView1.Columns.Add(new DataGridViewTextBoxColumn());            
    	dataGridView1.CurrentCellDirtyStateChanged += DataGridView1_CurrentCellDirtyStateChanged;
    
    	dataGridView1.Rows.Add(true, "João", 100);
    	dataGridView1.Rows.Add(true, "Pedro", 200);
    }
    
      
    
    private void DataGridView1_CurrentCellDirtyStateChanged(object sender, EventArgs e)
    {
    	var Grid = (sender as DataGridView);
    	var result = Convert.ToBoolean(Grid.CurrentRow.Cells[0].EditedFormattedValue);
    	Text = result.ToString();
    	Grid.EndEdit();
    	Calcular_Soma(sender);
    }
    
    private void Calcular_Soma(object sender)
    {
    	double soma = 0;
    	var Grid = (sender as DataGridView);
    	foreach(DataGridViewRow row in Grid.Rows)
    	{
    		if (Convert.ToBoolean(row.Cells[0].Value))
    		{
    			soma += Convert.ToDouble(row.Cells[2].Value);
    		}
    	}
    	label1.Text = soma.ToString();
    }


    Fulvio C

    sexta-feira, 30 de setembro de 2016 23:40