AcceptChanges と RejectChanges
更新 : November 2007
DataTable 内のデータに行われた変更が正確であるかどうかを検証した後で、DataRow、DataTable、または DataSet の AcceptChanges メソッドを使用して、変更を受け入れることができます。変更を受け入れると、Current 行値が Original 値に設定され、RowState プロパティが Unchanged に設定されます。変更を受け入れるかまたは拒否すると、RowError 情報が削除され、HasErrors プロパティが false に設定されます。変更を受け入れるかまたは拒否した場合、データ ソース内で実行中の更新操作にも影響することがあります。詳細については、「DataAdapter によるデータ ソースの更新 (ADO.NET)」を参照してください。
DataTable に外部キー制約が存在する場合、AcceptChanges と RejectChanges を使用して受け入れられた変更または拒否された変更は、ForeignKeyConstraint.AcceptRejectRule に基づいて DataRow の子の行に反映されます。詳細については、「DataTable の制約 (ADO.NET)」を参照してください。
行にエラーがあるかどうかをチェックし、必要に応じてエラーを解決し、エラーを解決できない場合にはその行を拒否する例を次に示します。解決されたエラーについては、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();