AcceptChanges 和 RejectChanges

在验证了对 DataTable 中的数据所做更改的准确性之后,可使用 DataRowDataTableDataSetAcceptChanges 方法来接受更改,此方法会将 Current 行值设置为 Original 值,并会将 RowState 属性设置为 Unchanged。 接受或拒绝更改会清除所有 RowError 信息,并将 HasErrors 属性设置为 false。 接受或拒绝更改还可以影响在数据源中更新数据。 有关更多信息,请参见使用 DataAdapter 更新数据源 (ADO.NET)

如果 DataTable 上存在外键约束,使用 AcceptChangesRejectChanges 接受或拒绝的更改就会根据 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();

请参见

参考

DataRow

DataSet

DataTable

其他资源

在 DataTable 中处理数据