我使用foreach循环使用以下代码从我的datagridview中获取数据。
foreach (DataGridViewRow row in this.dataGridMultiSubmit.Rows)
{
Model = row.Cells[0].Value.ToString();
Module = row.Cells[1].Value.ToString();
Section = row.Cells[2].Value.ToString();
FunctionValue = row.Cells[3].Value.ToString();
NewValue = row.Cells[4].Value.ToString();
DefaultValue = row.Cells[5].Value.ToString();
Description = row.Cells[6].Value.ToString();
MessageBox.Show(Model + Module + Section + FunctionValue + NewValue + DefaultValue + Description);
}
它会在消息框中正确返回所有行,但是当它通过所有行运行时它会给我NullReferenceException未处理,我该如何解决这个问题呢?
答案 0 :(得分:10)
如果您在迭代所有行时Value
中的任何一个null
,则对ToString()
的调用将抛出异常。
尝试改为:
Model = Convert.ToString(row.Cells[0].Value);
方法Convert.ToString()
会进行额外检查。
null
,则返回空字符串。null
,则会执行ToString()
。根据您的评论,您还需要确保不迭代显示在网格底部的新行。有一个名为IsNewRow
的内置属性。
获取一个值,该值指示该行是否为新记录的行。
foreach (DataGridViewRow row in this.dataGridMultiSubmit.Rows)
{
if (row.IsNewRow)
continue; // skip row, continue on to the next iteration
...
}