none
Atualizar um labem com o valor do índice selecionado no datagridview ?rem RRS feed

  • 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

    sábado, 10 de novembro de 2018 01:32

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í!

    domingo, 11 de novembro de 2018 05:20

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.

    sábado, 10 de novembro de 2018 06:25
  • 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
    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í!

    domingo, 11 de novembro de 2018 05:20