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();  

Vedi anche