GetChanges方法不返回任何行时出错

时间:2013-12-25 09:14:41

标签: c# winforms datagridview

我有一个基于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.");
        }
    }

有人可以告诉我错误的原因和补救措施吗?

1 个答案:

答案 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();将返回空值。