我有一个基于DataSet DS1的Table1表的DataGridView。当我对DataGridView进行更改并按下CancelChanges按钮时,它工作正常。但是如果DataGridView没有变化(即GetChanges()方法不会返回任何行)并按下CancelChanges按钮,则会抛出以下错误: -
“对象引用未设置为对象的实例”
在if (DgvChangedDT.Rows.Count != 0)
private void btnCancelChanges_Click(object sender, EventArgs e)
{
DataTable DgvChangedDT = new DataTable();
DgvChangedDT = DS1.Table1.GetChanges();
if (DgvChangedDT.Rows.Count != 0)
{
DS1.Table1.RejectChanges();
DS1.Table1.AcceptChanges();
}
else
{
MessageBox.Show("There are no pending changes.");
}
}
有人可以告诉我错误的原因和补救措施吗?
答案 0 :(得分:0)
请尝试以下代码:
private void btnCancelChanges_Click(object sender, EventArgs e)
{
DataTable DgvChangedDT = new DataTable();
DgvChangedDT = DS1.Table1.Changes();
if (DgvChangedDT != null && DgvChangedDT.Rows.Count != 0)
{
DS1.Table1.RejectChanges();
DS1.Table1.AcceptChanges();
}
else
{
MessageBox.Show("There are no pending changes.");
}
}
由于你缺少DgvChangedDT
的空检查,如果用户不在dgv中进行更改,那么DS1.Table1.Changes();
将返回空值。