AcceptChanges e RejectChanges
Dopo aver verificato la correttezza delle modifiche apportate alla DataTable, è possibile accettare tali modifiche usando il metodo AcceptChanges di DataRow, DataTable o DataSet. I valori della riga Current verranno impostati come valori Original e la proprietà RowState verrà impostata su Unchanged. L'accettazione o il rifiuto delle modifiche comporta la cancellazione di eventuali informazioni RowError e l'impostazione della proprietà HasErrors su false. È inoltre possibile che l'accettazione o il rifiuto delle modifiche influisca sui dati di aggiornamento nell'origine dati. Per altre informazioni, vedere Aggiornamento di origini dati con DataAdapter.
Se nella DataTable sono presenti vincoli di chiave esterna, le modifiche accettate o rifiutate tramite AcceptChanges e RejectChanges verranno propagate alle righe figlio del DataRow in base a ForeignKeyConstraint.AcceptRejectRule. Per altre informazioni, vedere Vincoli DataTable.
L'esempio seguente controlla se sono presenti righe con errori, risolve errori laddove è possibile e rifiuta le righe contenenti errori non risolvibili. Notare che, per quanto riguarda gli errori risolti, il valore RowError viene reimpostato su una stringa vuota, provocando l'impostazione della proprietà HasErrors su false. Quando tutte le righe contenenti errori sono state risolte o rifiutate, viene effettuata la chiamata ad AcceptChanges per accettare tutte le modifiche per l'intera 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();