DataRow temptDataRow = dtable.NewRow();
temptDataRow = dtable.Rows[selectSeq];
temptDataRow.AcceptChanges();
dtable.Rows[selectSeq].Delete();
dtable.AcceptChanges();
当删除由数据行数据引用的数据表的一行时,该行将被删除。有没有办法防止这种情况?
也许我听不懂这个问题。但是在许多情况下,您可能希望“回滚”更改,因为发生了错误,有必要将DataTable还原回其先前的状态。在这种情况下,您可以简单地使用DataTable.RejectChange()
。
private void AddNewDataRow(DataTable dt)
{
try
{
DataRow drNew = dt.NewRow();
dt.Rows.Add(drNew);
//
// .. doing other stuff that throws and error before AcceptChange is called
//
dt.AcceptChanges();
}
Catch()
{
//RollBack Because an error occurred
dt.RejectChanges();
}
}
在调用RejectChanges()
之前调用AcceptChanges()
时,所有更改都会回滚。因此,在上面的示例中,如果未首先调用Catch
,则将在AcceptChanges()
块中删除新行。行删除调用也是如此。