Inquiridor
somar coluna em datagrid com checkbox ticado

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 200o 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
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
-
-
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