Accettazione o rifiuto delle modifiche alle righe

Dopo aver verificato la correttezza delle modifiche apportate alla DataTable, è possibile accettare tali modifiche utilizzando il metodo AcceptChanges del DataRow, della DataTable o del 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 ulteriori informazioni, vedere Aggiornamento del database tramite adattatori di dati e DataSet.

Se nella DataTable vi sono 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 informazioni dettagliate, vedere Aggiunta di vincoli alla tabella.

L'esempio seguente consente di controllare se sono presenti righe con errori, di risolvere gli errori, dove possibile, e di rifiutare le righe contenenti errori non risolvibili. Si noti che, per quanto riguarda gli errori risolti, il valore RowError viene reimpostato su una stringa vuota. La proprietà HasErrors verrà quindi impostata su false. Quando tutte le righe contenenti errori sono state risolte o rifiutate, verrà effettuata la chiamata ad AcceptChanges per accettare tutte le modifiche dell'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()
[C#]
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();

Vedere anche

Modifica dei dati in una DataTable | Classe DataRow | Classe DataSet | Classe DataTable