"AcceptChanges" und "RejectChanges"
Nach Sie sichergestellt haben, dass die Änderungen an den Daten in einer DataTable korrekt sind, können Sie die Änderungen mithilfe der AcceptChanges-Methode der DataRow, der DataTable oder des DataSet übernehmen. Dadurch werden die Current-Zeilenwerte auf Original-Werte festgelegt, und die RowState-Eigenschaft wird auf Unchanged festgelegt. Durch Übernehmen oder Ablehnen der Änderungen werden jegliche RowError-Informationen gelöscht, und die HasErrors-Eigenschaft wird auf false festgelegt. Das Übernehmen oder Zurückweisen von Änderungen kann sich auch auf das Update von Daten in der Datenquelle auswirken. Weitere Informationen finden Sie unter Aktualisieren von Datenquellen mit DataAdapters.
Wenn für die DataTable Fremdschlüsseleinschränkungen vorhanden sind, werden Änderungen, die mit AcceptChanges und RejectChanges übernommen oder zurückgewiesen wurden, gemäß der ForeignKeyConstraint.AcceptRejectRule an die untergeordneten Zeilen der DataRow weitergegeben. Weitere Informationen finden Sie unter DataTable-Einschränkungen.
Im folgenden Beispiel werden Zeilen mit Fehlern gesucht, die Fehler ggf. behoben und die Zeilen, in denen die Fehler nicht behoben werden können, zurückgewiesen. Beachten Sie, dass bei behobenen Fehler der RowError-Wert auf eine leere Zeichenfolge zurückgesetzt wird, was dazu führt, dass die HasErrors-Eigenschaft auf false festgelegt wird. Wenn alle Zeilen mit Fehlern aufgelöst oder zurückgewiesen wurden, wird AcceptChanges aufgerufen, um alle Änderungen für die gesamte DataTable zu übernehmen.
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();