我有一个名为IncTbl
的DataGridView。我正在循环它,我正在添加第4列中的值,索引i到yearSalary
变量:
for (int i = 0; i < IncTbl.Rows.Count; i++)
{
if (IncTbl.CurrentRow.IsNewRow) break;
yearSalary += (decimal)IncTbl[4, i].Value;
}
我不想添加null,因为我会得到NullReferenceException
,所以我使用IsNewRow
属性。但是,即使是新行,它也会返回false。我该如何解决这个问题?
答案 0 :(得分:2)
你并不是唯一一个看过这种行为的人。在this MSDN post中,IsNewRow
似乎已被报告为错误。
事件break
在这种情况下有点不寻常。您可以考虑按如下方式稍微调整循环:
for (int i = 0; i < IncTbl.Rows.Count; i++)
{
if (!IncTbl.CurrentRow.IsNewRow)
yearSalary += (decimal)IncTbl[4,i].Value;
}
答案 1 :(得分:0)
你错了IsNewRow
。仅适用于允许用户插入新数据的行。绑定行包含数据库数据,这意味着它不是新数据而是持久数据。
您需要避免NullReferenceException
检查行类型。标题行可能搞砸了......
看看这是否有帮助:RowType。
答案 2 :(得分:-1)
你可以这样循环,例如:
foreach (DataGridViewRow row in dataGridView1.Rows)
{
decimal temp;
if(!row.IsNewRow && decimal.TryParse(row.Cells[4].Value.ToString(), out temp))
yearSalary += temp;
}