AcceptChange 和 RejectChange

验证对数据DataTable所做更改的准确性后,可以通过AcceptChanges方法或DataRowDataTableDataSet来接受更改,这将把行值Current设置为Original值,并将RowState属性设置为未更改。 接受或拒绝更改会清除任何 RowError 信息,并将 HasErrors 属性设置为 false。 接受或拒绝更改还会影响更新数据源中的数据。 有关详细信息,请参阅 使用 DataAdapters 更新数据源

如果DataTable上存在外键约束,使用AcceptChangesRejectChanges接受或拒绝的更改会根据ForeignKeyConstraint.AcceptRejectRule传播到子行DataRow。 有关详细信息,请参阅 DataTable 约束

以下示例检查是否存在错误的行,解决适用的错误,并拒绝无法解决错误的行。 请注意,对于已解决的错误, 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();

另请参阅