How to perform sum by row in a datagridview in C #

1

Good afternoon, I need a help, I have a datagridview that contains a column of Currency type and a column of total Currency. In the Currency Type column I can have up to 3 types of currency, euro currency, dollar currency and real currency. Now I need to make a currency sum. Ex add everything that is euro currency and show in txtboxEuro, then add everything that is dollar currency and show in textboxDolar. How can I do this?

follows the datagridview screen.

Followmycode.

privatevoidListaGrid(){conex.Open();stringstrSQL=@"SELECT DISTINCT
                            SY.YF_DESC_SI                               AS [TIPO MOEDA],
                            RTRIM(SC.C7_PRODUTO) + ' - ' + SC.C7_DESCRI AS PRODUTO,
                            SUM(SC.C7_QUANT)                            AS QTDA, 
                            SUM(SC.C7_TOTAL * SC.C7_TXMOEDA)            AS TOTAL,
                            SUM(SC.C7_TOTAL)                            AS [TOTAL MOEDA]
                   FROM  SC7010 AS SC
                   INNER JOIN SM2010 AS SM WITH (NOLOCK) ON SM.M2_DATA = SC.C7_EMISSAO
                   INNER JOIN SA2010 AS SA WITH (NOLOCK) ON SA.A2_COD = SC.C7_FORNECE
                   INNER JOIN SYF010 AS SY WITH (NOLOCK) ON SY.YF_MOEFAT = SC.C7_MOEDA
                   WHERE SC.D_E_L_E_T_ <> '*' 
 AND SC.C7_EMISSAO BETWEEN CONVERT(datetime, '" + txtDtInicial.Text + "', 103) AND CONVERT(datetime,'" + txtDtFinal.Text + "', 103) AND SA.A2_COD = '" + txtCodFornec.Text + "' GROUP BY SC.C7_PRODUTO, SC.C7_DESCRI, SY.YF_DESC_SI ORDER BY RTRIM(SC.C7_PRODUTO) + ' - ' + SC.C7_DESCRI";

            comando = new SqlCommand(strSQL, conex);

            try
            {
                SqlDataAdapter dados = new SqlDataAdapter(comando);
                DataTable dtLista = new DataTable();
                dados.Fill(dtLista);

                DGW_PedComprasPic.DataSource = dtLista;
            }
            catch
            {
                MessageBox.Show("Não existem dados a serem encontrados");
            }

            double QTDA = 0;
            foreach (DataGridViewRow rowKG in DGW_PedComprasPic.Rows)
            {
                QTDA += Convert.ToDouble(rowKG.Cells["QTDA"].Value);
            }
            txtProdkg.Text = Convert.ToString(QTDA);
            txtProdkg.Text = QTDA.ToString("N2");

            double TotalReal = 0;
            foreach (DataGridViewRow rowR in DGW_PedComprasPic.Rows)
            {
                TotalReal += Convert.ToDouble(rowR.Cells["TOTAL"].Value);
            }
            txtReal.Text = Convert.ToString(TotalReal);
            txtReal.Text = TotalReal.ToString("C");

            conex.Close();
        }
    
asked by anonymous 18.09.2017 / 21:02

1 answer

0

With LINQ it is very good to do this, and simple.

decimal totalEuro = DGW_PedComprasPic.Rows.Cast<DataGridViewRow>()
.Where(t => t.Cells[/*Nome ou indice da coluna com o tipo da moeda */].Value.ToString() == "Euro")
.Sum(t => Convert.ToDecimal(t.Cells[/*Nome ou indice da coluna de com o valor */].Value));

txtBoxTotalEuro.Text = totalEuro; // Ajustar para valor monetário.
    
18.09.2017 / 21:20