AcceptChanges 和 RejectChanges
更新:November 2007
在验证了对 DataTable 中的数据所做更改的准确性之后,可使用 DataRow、DataTable 或 DataSet 的 AcceptChanges 方法来接受更改,此方法会将 Current 行值设置为 Original 值,并会将 RowState 属性设置为 Unchanged。接受或拒绝更改会清除所有 RowError 信息,并将 HasErrors 属性设置为 false。接受或拒绝更改还可以影响在数据源中更新数据。有关更多信息,请参见使用 DataAdapter 更新数据源 (ADO.NET)。
如果 DataTable 上存在外键约束,使用 AcceptChanges 和 RejectChanges 接受或拒绝的更改就会根据 ForeignKeyConstraint.AcceptRejectRule 传播到 DataRow 的子行。有关更多信息,请参见数据表约束 (ADO.NET)。
以下示例检查有错误的行,如果可以会解决错误,拒绝无法解决错误的行。请注意,对于已解决的错误,RowError 值会重置为空字符串,导致将 HasErrors 属性设置为 false。当解决或拒绝了所有有错误的行后,就会调用 AcceptChanges 来接受对整个 DataTable 的所有更改。
If workTable.HasErrors Then
Dim errRow As DataRow
For Each errRow in workTable.GetErrors()
If errRow.RowError = "Total cannot exceed 1000." Then
errRow("Total") = 1000
errRow.RowError = "" ' Clear the error.
Else
errRow.RejectChanges()
End If
Next
End If
workTable.AcceptChanges()
if (workTable.HasErrors)
{
foreach (DataRow errRow in workTable.GetErrors())
{
if (errRow.RowError == "Total cannot exceed 1000.")
{
errRow["Total"] = 1000;
errRow.RowError = ""; // Clear the error.
}
else
errRow.RejectChanges();
}
}
workTable.AcceptChanges();