AcceptChange 和 RejectChange

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

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

请参阅