AcceptChanges 和 RejectChanges
在验证了对 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();