AcceptChanges et RejectChanges
Après avoir vérifié l'exactitude des modifications apportées aux données d'un objet DataTable, vous pouvez les accepter à l'aide de la méthode AcceptChanges des objets DataRow, DataTable ou DataSet, qui définira les valeurs de ligne Current comme valeurs Original et attribuera la valeur Unchanged à la propriété RowState. L'acceptation ou le rejet des modifications supprime toutes les informations RowError et attribue la valeur false à la propriété HasErrors. L'acceptation ou le rejet des modifications peut également affecter la mise à jour des données dans la source de données. Pour plus d'informations, voir Mise à jour de sources de données à l'aide de DataAdapters (ADO.NET).
S'il existe des contraintes de clé étrangère dans le DataTable, les modifications acceptées ou rejetées à l'aide de AcceptChanges et RejectChanges sont propagées aux lignes enfants du DataRow en fonction de ForeignKeyConstraint.AcceptRejectRule. Pour plus d'informations, voir Contraintes DataTable (ADO.NET).
L'exemple suivant vérifie les lignes ayant des erreurs, résout, le cas échéant, les erreurs et rejette les lignes dans lesquelles les erreurs ne peuvent pas être résolues. Notez que, pour les erreurs résolues, la valeur RowError est réinitialisée sur une chaîne vide, provoquant l'attribution de la valeur false à la propriété HasErrors. Lorsque toutes les lignes ayant des erreurs ont été résolues ou rejetées, AcceptChanges est appelée pour accepter toutes les modifications pour l'ensemble du 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();