首页 > 解决方案 > 将另一列的两列datagridview单元格值相乘,然后将所有行的值相加

问题描述

我有这个datagridview,我用这段代码对所有时间的张力值求和:

    int finalSum = 0;
for (int p = 0; p < dataGridView1.Rows.Count; ++p)
  {
     finalSum += getCellDigitSum(Convert.ToInt32(dataGridView1.Rows[p].Cells[4].Value));
  }
    
 label22.Text = finalSum.ToString();
    
 int getCellDigitSum(int cellValue)
   {
     int l = cellValue;
     int result = 0;
    
     while (l > 0)
       {
         result += (l % 10);
    
         l = l / 10;
       }
    
    return result;
 }

使用此代码,我获得单个值的总和(201 变为 3),然后是所有行的总和。

问题是我需要首先将“Ripetizioni”值乘以“Serie”列值,然后将结果乘以“紧张时间”的多位数字之和(201 将是 3),最后乘以结果对于所有行。

这是数据网格视图数据网格视图

所以例如在第一行我需要做 11 x 3 = 结果 x (201 sum so 3)。

循环所有行并计算值的总和

标签: c#datagridviewsum

解决方案


请试试这个。如果您遇到任何问题,请告诉我。可根据需要修改计算。

        int finalSum = 0;
        for (int p = 0; p < dataGridView1.Rows.Count; ++p)
        {
            finalSum += getCellDigitSum(dataGridView1.Rows[p]);
        }

        //label22.Text = finalSum.ToString();

        int getCellDigitSum(DataGridViewRow dr)
        {
            int serie = Convert.ToInt32(dr.Cells[0].Value);//you can change cell index or use column name
            int ripetizioni = Convert.ToInt32(dr.Cells[1].Value);//you can change cell index or use column name
            //timeundertension
            int l = Convert.ToInt32(dr.Cells[3].Value);
            int sumTimeUnderTension = 0;

            int result = 0;

            while (l > 0)
            {
                sumTimeUnderTension += (l % 10);

                l = l / 10;
            }

            result = serie * ripetizioni * sumTimeUnderTension;
            return result;
        }

推荐阅读