Usuário com melhor resposta
Atualizar um labem com o valor do índice selecionado no datagridview ?rem

Pergunta
-
Ola pessoal! Em um dgv, cada linha contém informação de valores de pagamentos.
Estou tentando atualizar um label com esses valores na hora em que o índice da linha foi selecionado no datagridview.
Mas o label sempre fica no valor da situação anterior. Quando eu seleciono a linha de valor R$ 1,00 ele mantém zero e quando eu selecionar em seguida também a linha de valor R$ 2,00, ai o label recebe o valor R$1,00, quando a intenção é receber R$3,00. Quando eu selecionar, qualquer outra linha, ou desmarcar uma marcada, ai ele recebe o valor R$3,00. E assim por diante. Não to conseguindo sair dessa. O código do evento é o seguinte:
private void dgvHonorarios_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
List<Honorario> lista = new List<Honorario>();
double soma = 0;
foreach (DataGridViewRow check in dgvHonorarios.Rows)
{
if ((bool)check.Cells[0].FormattedValue)
{
soma += double.Parse(check.Cells[3].Value.ToString().Replace("R$", ""));
}
label.Text = string.Format("{0:c}", soma);
}
}
Desde já, obrigado
Respostas
-
Bem Luiz!
Tente executar o método que calcula as linhas da grid fora de eventos da gridView, ou seja pode ser chamado por um botão por exemplo:
private void PegarValoresChecados()
{
List<Honorario> lista = new List<Honorario>();
double soma = 0;
foreach (DataGridViewRow check in dgvHonorarios.Rows)
{
if ((bool)check.Cells[0].FormattedValue)
{
soma += double.Parse(check.Cells[3].Value.ToString().Replace("R$", ""));
}
}
label.Text = string.Format("{0:c}", soma);
}Sucesso aí!
- Marcado como Resposta Filipe B CastroModerator segunda-feira, 10 de dezembro de 2018 17:57
Todas as Respostas
-
Olá Luiz,
Se a ideia é atualizar o valor do label através da linha atual da grid, sugiro-te de usar o evento CellContentClick. vê como ficaria o código:
private void dgvHonorarios_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
List<Honorario> lista = new List<Honorario>();
double soma = 0;
if ((bool)dgvHonorarios.CurrentRow.Cells[0].FormattedValue)
{
soma += double.Parse(dgvHonorarios.CurrentRow.Cells[3].Value.ToString().Replace("R$", ""));
}
label1.Text = string.Format("{0:c}", soma);
}Se te ajudou marque como resposta.
-
Não funcionou amigo! A ideia é atualizar o label com o valor dos pagamentos de todas as linhas que estão com o índice marcado.
Acho que preciso do foreach para checar todas as linhas do dgv e pegar os valores das linhas marcadas.
Troquei o evento, mas segue dando o mesmo resultado. Segue atualizando após o segundo click. Se souber outra alternativa, desde já obrigado de novo.
- Editado Luiz Eduu sábado, 10 de novembro de 2018 20:25
-
Bem Luiz!
Tente executar o método que calcula as linhas da grid fora de eventos da gridView, ou seja pode ser chamado por um botão por exemplo:
private void PegarValoresChecados()
{
List<Honorario> lista = new List<Honorario>();
double soma = 0;
foreach (DataGridViewRow check in dgvHonorarios.Rows)
{
if ((bool)check.Cells[0].FormattedValue)
{
soma += double.Parse(check.Cells[3].Value.ToString().Replace("R$", ""));
}
}
label.Text = string.Format("{0:c}", soma);
}Sucesso aí!
- Marcado como Resposta Filipe B CastroModerator segunda-feira, 10 de dezembro de 2018 17:57