计算DataGridView的行,其中单元格值小于另一个单元格值

时间:2016-02-21 13:02:16

标签: c# datagridview count

我想计算一个DataGridView的所有行,其中一个单元格值小于另一个单元格值。在我的代码中,单元格value1(int a)小于单元格value2(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);
                }
            }

1 个答案:

答案 0 :(得分:0)

因为您在每次迭代中初始化了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);
     }
}

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