无法遍历datagridview中的单元格

时间:2016-07-06 19:08:17

标签: c# datagridview

我有一个datagrid,返回4列和244行。第4列有三种不同的状态“已完成”,“正在进行中”,“未进入”,但所有这些状态都在单元格之外。我需要循环遍历第4列中的每个单元格并读取值将它们加起来并将它们存储在varibale中。所以我需要有3个变量以及3个状态。我该怎么办?

Here is the code that I have. I am not sure if this is the right way to do it or if there is

一种更简单的方法,问题就是在我运行之后它一直告诉我“对象引用未设置为对象的实例。”

listNames = new List<string>();
foreach (DataGridViewRow row in dataGridView1.Rows)
{
    foreach (DataGridViewCell cell in row.Cells)
    {
        int i = 0;
                if (cell.Value.ToString() == "Completed")
                {
                   i ++;
                   i += i;
                }  
                MessageBox.Show(i.ToString());
        }
    }
}

3 个答案:

答案 0 :(得分:1)

看起来cell.Value可以为null,因此请替换

if  (cell.Value.Equals("Completed"))

if  (cell.Value == "Completed")

无论如何String ==运算符被重载以按值进行比较,因此该代码将运行正常

答案 1 :(得分:0)

看看这个并使用代码中的调试器步骤测试它,并通过这个简单的例子了解正在发生的事情。

foreach (DataGridViewRow row in dataGridView1.Rows)
{
    foreach (DataGridViewCell cell in row.Cells)
    {
        Console.WriteLine(Convert.ToString(cell.Value));
    }
}

答案 2 :(得分:0)

如果你想计算它们,试试这个

var iRows = dataGridView1.Rows.Cast<DataGridViewRow>();
var statusLookup = iRows.ToLookup(r => r.Cells[3].Value + ""); 
int countOfCompleted = statusLookup["Completed"].Count();