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éfinit les valeurs de ligne Current comme valeurs Original et attribue 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, consultez Mise à jour des sources de données avec DataAdapters.

En présence de contraintes de clé étrangère sur DataTable, les modifications acceptées ou rejetées à l’aide d’AcceptChanges et de RejectChanges sont propagées aux lignes enfants de DataRow, conformément à la règle ForeignKeyConstraint.AcceptRejectRule. Pour plus d’informations, consultez Contraintes de DataTable.

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. Une fois toutes les lignes comportant des erreurs résolues ou rejetées, AcceptChanges est appelé afin d’accepter toutes les modifications pour l’ensemble de 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();  

Voir aussi