AcceptChange 和 RejectChange

验证对数据DataTable所做的更改的准确性后,可以使用 的方法AcceptChanges接受更改DataRow;DataTable或者DataSet,将当前行值设置为原始值,并将 RowState 属性设置为“未更改”。 接受或拒绝更改会清除任何 RowError 信息,并将 HasErrors 属性设置为 false。 接受或拒绝更改还会影响更新数据源中的数据。 有关详细信息,请参阅 使用 DataAdapters 更新数据源

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

另请参阅