none
Calculo com colunas no datagridiview RRS feed

  • Pergunta

  • Preciso de uma ajuda, quando carrego meu datagridview tenho duas colunas, a coluna PesoBruto e a coluna QtdaEmbalagem.No primeiro momento estas duas colunas vem com valor zerado. Preciso só fazer o calculo quando o usuario digitar o valor me cada coluna de cada linha, ai quando ele clikar no enter ou passar para proxima linha oiu sair da celula, o calculo e realizado mostrando em uma terceira coluna no data grid.

    Estou usando o código abaixo para realizar o calculo.

    foreach (DataGridViewRow row in dgw_Xml.Rows)

                {
                    row.Cells["ConferenciaPB"].Value = Convert.ToDecimal(row.Cells["PesoBruto"].Value) / Convert.ToDecimal(row.Cells["QtdaEmbalagem"].Value);
                }


    JUNIOR GUERREIRO T.I

    quarta-feira, 18 de julho de 2018 15:38

Respostas

  • olá amigo!

    talvez seja melhor criar uma função que te retorna a cada evento da grid que te convier o valor já calculado a atribuir na Cells["ConferenciaPB"]. Será algo assim :

    dgw_Xml.CurrentRow.Cells[0].value = ConferirPB();

    private decicimal ConferirPB()
    {
       decimal pesoBruto = Convert.ToDecimal(dgw_Xml.CurrentRow.Cells[0].value);
       decimal qtdaEmbalagem = Convert.ToDecimal(dgw_Xml.CurrentRow.Cells[1].value);
       return pesoBruto / qtdaEmbalagem;
    }

    suponho que as posições das cells estão da forma que pus senão é só mudar.

    Espero ter ajudado.

    • Sugerido como Resposta Timóteo Nkawa quarta-feira, 18 de julho de 2018 17:18
    • Marcado como Resposta Junior Guerreiro quarta-feira, 18 de julho de 2018 19:10
    quarta-feira, 18 de julho de 2018 17:17
  • Ok!

    neste caso coloca uma validação dentro do método tipo assim :

    private decicimal ConferirPB()
    {
       decimal pesoBruto = Convert.ToDecimal(dgw_Xml.CurrentRow.Cells[0].value);
       decimal qtdaEmbalagem = Convert.ToDecimal(dgw_Xml.CurrentRow.Cells[1].value);

        if(pesoBruto > 0 && qtdaEmbalagem > 0)
            return pesoBruto / qtdaEmbalagem;

         else return  0;

    }

    • Sugerido como Resposta Timóteo Nkawa quarta-feira, 18 de julho de 2018 17:55
    • Marcado como Resposta Junior Guerreiro quarta-feira, 18 de julho de 2018 19:10
    quarta-feira, 18 de julho de 2018 17:53

Todas as Respostas

  • olá amigo!

    talvez seja melhor criar uma função que te retorna a cada evento da grid que te convier o valor já calculado a atribuir na Cells["ConferenciaPB"]. Será algo assim :

    dgw_Xml.CurrentRow.Cells[0].value = ConferirPB();

    private decicimal ConferirPB()
    {
       decimal pesoBruto = Convert.ToDecimal(dgw_Xml.CurrentRow.Cells[0].value);
       decimal qtdaEmbalagem = Convert.ToDecimal(dgw_Xml.CurrentRow.Cells[1].value);
       return pesoBruto / qtdaEmbalagem;
    }

    suponho que as posições das cells estão da forma que pus senão é só mudar.

    Espero ter ajudado.

    • Sugerido como Resposta Timóteo Nkawa quarta-feira, 18 de julho de 2018 17:18
    • Marcado como Resposta Junior Guerreiro quarta-feira, 18 de julho de 2018 19:10
    quarta-feira, 18 de julho de 2018 17:17
  • Obrigado pela atenção Timoteo, mas estou com um problema ainda, seu codigo ja me ajudou muito era isso mesmo que precisa, só como eu estou fazendo uma divisão, esta colunas eu ainda não tenho valores nela tanto que abrem com valor zero e esta dando erro, que esta tentando dividir por zero no c#


    JUNIOR GUERREIRO T.I

    quarta-feira, 18 de julho de 2018 17:35
  • Ok!

    neste caso coloca uma validação dentro do método tipo assim :

    private decicimal ConferirPB()
    {
       decimal pesoBruto = Convert.ToDecimal(dgw_Xml.CurrentRow.Cells[0].value);
       decimal qtdaEmbalagem = Convert.ToDecimal(dgw_Xml.CurrentRow.Cells[1].value);

        if(pesoBruto > 0 && qtdaEmbalagem > 0)
            return pesoBruto / qtdaEmbalagem;

         else return  0;

    }

    • Sugerido como Resposta Timóteo Nkawa quarta-feira, 18 de julho de 2018 17:55
    • Marcado como Resposta Junior Guerreiro quarta-feira, 18 de julho de 2018 19:10
    quarta-feira, 18 de julho de 2018 17:53
  • Muito obrigado, deu certinho aqui Vlw.

    JUNIOR GUERREIRO T.I

    quarta-feira, 18 de julho de 2018 19:10