计算数据网格视图中一个单元格值小于另一个单元格值的行数

本文关键字:单元格 一个 小于 另一个 网格 数据网 数据 视图 计算 | 更新日期: 2023-09-27 18:35:31

我想计算 DataGridView 中一个单元格值小于另一个单元格值的所有行。在我的代码中,单元格值 1 (int a) 小于单元格值 2 (int b) 的所有行都会被墨迹化。但我真的没有找到计算行数的方法。现在我的 int 计数器会给出:1 这不可能是真的。我想我需要像dgvArticleStockInfo.RowsCount(a <= b)这样的东西,但我没有找到一种方法来做到这一点。任何帮助都值得赞赏:)

            foreach (DataGridViewRow row in dgvArticleStockInfo.Rows)
            {
                int counter = 0;
                int a = Convert.ToInt32(row.Cells[2].Value);
                int b = Convert.ToInt32(row.Cells[3].Value);
                if (a <= b)
                {
                    row.DefaultCellStyle.BackColor = Color.FromArgb(144, 238, 144);
                    panel1.BackColor = Color.FromArgb(144, 238, 144);
                    counter++;
                }
                else
                {
                    row.DefaultCellStyle.BackColor = Color.FromArgb(255,106,106);
                    panel2.BackColor = Color.FromArgb(255,106,106);
                }
            }

计算数据网格视图中一个单元格值小于另一个单元格值的行数

因为您在每次迭代中初始化counter并将其值设置为 0 .它转到您的 if 部分并增加它的价值,它将1.但是在下一次迭代之后,您再次将其初始化为零并增加它。

在 foreach 循环之前初始化您的counter,您应该没问题。

int counter = 0;
int a = Convert.ToInt32(row.Cells[2].Value);
int b = Convert.ToInt32(row.Cells[3].Value);
foreach (DataGridViewRow row in dgvArticleStockInfo.Rows)
{
     if (a <= b)
     {
         row.DefaultCellStyle.BackColor = Color.FromArgb(144, 238, 144);
         panel1.BackColor = Color.FromArgb(144, 238, 144);
         counter++;
     }
     else
     {
         row.DefaultCellStyle.BackColor = Color.FromArgb(255,106,106);
         panel2.BackColor = Color.FromArgb(255,106,106);
     }
}

但更重要的是,您可以通过简单的调试操作来解决此问题。我建议您阅读这些文章以提高您的调试技能。

  • https://msdn.microsoft.com/en-us/library/y740d9d3.aspx
  • https://msdn.microsoft.com/en-us/library/ms173083%28v=vs.90%29.aspx
  • http://csharp.net-tutorials.com/debugging/introduction/