我有一个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());
}
}
}
答案 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();