none
Somar valores da grid resultado na textbox RRS feed

  • Pergunta

  • Olá Pessoal, estou com um problema, e se fosse possivel, gostaria de uma ajuda.

    Tenho uma WinForm, onde cadastro pedidos, a cada pedido cadastrado ele vai p/ uma grid, existe na grid uma coluna de Valor, gostaria de somar esses valores quando houver + de 1 produto e o resultado ir para uma TextBox.

    Imagem da form:

    http://i33.tinypic.com/2lxe5gw.jpg

    sexta-feira, 20 de agosto de 2010 14:27

Respostas

  • Acho que você pode fazer assim:

    int n = 0;

    for(int i = 0; i < grid.Rows.Count; i++)

    {

            if(!grid.Rows[i]["Valor"].ToString().Equals(""))

            {

                    n++;

            }

    }

    if(n > 1)

    {

            double soma = 0;

            for(int i = 0; i < grid.Rows.Count; i++)

            {

                    soma += double.Parse(grid.Rows.Count[i]["Valor"]);

            }

            textBox1.Text = soma.ToString();

    }
    sexta-feira, 20 de agosto de 2010 14:37
  • Heron,

    Também pode fazer de uma forma mais reduzida, utilizando LINQ ou ForEach:

        private void SumarizaGridLinq()
        {
          var valores = from DataGridViewRow row in grid.Rows
                 select Convert.ToDouble(row.Cells["ValorQuantidade"]);
    
          txtTotal.Text = valores.Sum().ToString();
        }
        private void SumarizaGridForeach()
        {
          double totalValor = 0;
          
          foreach (DataGridViewRow row in grid.Rows)
            totalValor += Convert.ToDouble(row.Cells["ValorQuantidade"]);
    
          txtTotal.Text = totalValor.ToString();
        }
    
    

    André Alves de Lima
    Visite o meu site: http://andrealveslima.spaces.live.com
    Me siga no Twitter: @andrealveslima
    sábado, 21 de agosto de 2010 00:18
    Moderador

Todas as Respostas

  • Acho que você pode fazer assim:

    int n = 0;

    for(int i = 0; i < grid.Rows.Count; i++)

    {

            if(!grid.Rows[i]["Valor"].ToString().Equals(""))

            {

                    n++;

            }

    }

    if(n > 1)

    {

            double soma = 0;

            for(int i = 0; i < grid.Rows.Count; i++)

            {

                    soma += double.Parse(grid.Rows.Count[i]["Valor"]);

            }

            textBox1.Text = soma.ToString();

    }
    sexta-feira, 20 de agosto de 2010 14:37
  • Heron,

    Também pode fazer de uma forma mais reduzida, utilizando LINQ ou ForEach:

        private void SumarizaGridLinq()
        {
          var valores = from DataGridViewRow row in grid.Rows
                 select Convert.ToDouble(row.Cells["ValorQuantidade"]);
    
          txtTotal.Text = valores.Sum().ToString();
        }
        private void SumarizaGridForeach()
        {
          double totalValor = 0;
          
          foreach (DataGridViewRow row in grid.Rows)
            totalValor += Convert.ToDouble(row.Cells["ValorQuantidade"]);
    
          txtTotal.Text = totalValor.ToString();
        }
    
    

    André Alves de Lima
    Visite o meu site: http://andrealveslima.spaces.live.com
    Me siga no Twitter: @andrealveslima
    sábado, 21 de agosto de 2010 00:18
    Moderador