【问题标题】:Sum multiple digit from datagridview and then sum cell values from specific column对 datagridview 中的多个数字求和,然后对特定列中的单元格值求和
【发布时间】:2021-07-13 12:04:14
【问题描述】:

我有一个 datagridview 列,其中的值由多个数字组成。

我正在尝试从该列中获取所有单元格值的总和,但首先我需要对单个单元格中的数字求和。

column

示例:每个单元格都有“201”值。我需要获得“3”作为结果,然后对所有行值求和。因此,如果我有 3 行和 201,我需要为每个获得 3,然后总共获得 9。

如何做到这一点?

这是我的代码,但它似乎给出了错误的结果。

int sum4 = 0;
        for (int p = 0; p < dataGridView1.Rows.Count; ++p)
        {
            sum4 += Convert.ToInt32(dataGridView1.Rows[p].Cells[4].Value);
        }

        int sum5 = 0;
        while (sum4 != 0)
        {
            sum5 += sum4 % 10;
            sum4 /= 10;
        }

        label22.Text = sum5.ToString();

现在有 3 行结果给我 9,结果有 4 行给我 12,但是当我有 5 行时它给我 6!

编辑

提供的解决方案有效,但我错过了一步。

在我的 datagridview 中,我需要首先将“Ripetizioni”值乘以“Serie”值,然后将其乘以“Time under Tension”列的秒数总和。 A 结束所有行值的总和。

因此,对于单行,我需要乘以 11 x 3(第一个示例),然后是 201 与 3 的总和作为结果,再乘以 11x3= 33 x(201 结果的总和)。最后是所有行的总和

我怎样才能做到这一点?

【问题讨论】:

  • 您需要为此添加一个单独的问题。每个帖子允许一个问题。
  • 好的,我会创建一个新的,谢谢

标签: c# datagridview sum


【解决方案1】:

试试这个。在您的解决方案中,您每次都在更改 sum4 的值。这是错误的。

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;
 }

【讨论】:

  • 如果这行得通,请投票,这样也可以帮助其他人。
  • 我现在做到了。在同一个数据网格视图中,我有一列带有日期时间值(mm:ss)。如何编辑此代码以对所有值求和并以秒为单位返回总和?
  • 您需要将秒值传递给函数。首先从单元格中提取秒数,然后将其传递给函数。
  • 你有例子吗?
  • 您需要分享您的示例单元格和值。我会检查的。它会更有用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-31
  • 1970-01-01
  • 2021-05-22
  • 1970-01-01
  • 2014-05-31
相关资源
最近更新 更多