AcceptChange と RejectChange

DataTable 内のデータに行われた変更が正確であるかどうかを検証した後で、DataRowDataTable、または DataSetAcceptChanges メソッドを使用して、変更を受け入れることができます。変更を受け入れると、Current 行の値が Original の値に設定され、RowState プロパティが Unchanged に設定されます。 変更を受け入れるかまたは拒否すると、RowError 情報が削除され、HasErrors プロパティが false に設定されます。 変更を受け入れるかまたは拒否した場合、データ ソース内で実行中の更新操作にも影響することがあります。 詳しくは、「DataAdapter によるデータ ソースの更新」をご覧ください。

DataTable に外部キー制約が存在する場合、AcceptChangesRejectChanges を使用して受け入れられた変更または拒否された変更は、ForeignKeyConstraint.AcceptRejectRule に従って DataRow の子の行に反映されます。 詳しくは、「DataTable の制約」をご覧ください。

行にエラーがあるかどうかをチェックし、必要に応じてエラーを解決し、エラーを解決できない場合にはその行を拒否する例を次に示します。 解決されたエラーについては、RowError 値が空の文字列にリセットされるため、HasErrors プロパティが false に設定されます。 エラーのある行がすべて解決または拒否された時点で、DataTable 全体に対するすべての変更を受け入れるために、AcceptChanges が呼び出されます。

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();  

関連項目