Modifica dei dati mediante un DataView

È possibile utilizzare il DataView per aggiungere, eliminare o modificare righe di dati nella tabella sottostante. La possibilità di utilizzare il DataView per modificare i dati nella tabella sottostante è controllata dall'impostazione di una delle tre proprietà Boolean del DataView. Tali proprietà sono AllowNew, AllowEdit e AllowDelete. L'impostazione predefinita è true.

Se AllowNew è impostata su true, è possibile utilizzare il metodo AddNew di DataView per creare un nuovo DataRowView. Si noti che la nuova riga viene effettivamente aggiunta alla DataTable sottostante solo dopo la chiamata del metodo EndEdit di DataRowView. Se viene chiamato il metodo CancelEdit di DataRowView, la nuova riga verrà eliminata. Si noti inoltre che è possibile modificare solo un DataRowView alla volta. Se si chiama il metodo AddNew o BeginEdit di DataRowView mentre è presente una riga in sospeso, EndEdit viene chiamato implicitamente per la riga in sospeso. Quando EndEdit viene chiamato, le modifiche vengono applicate alla DataTable sottostante ed è possibile confermarle o rifiutarle in un secondo momento mediante i metodi AcceptChanges o RejectChanges degli oggetti DataTable, DataSet o DataRow. Se AllowNew è impostata su false, in caso di chiamata del metodo AddNew di DataRowView viene generata un'eccezione.

Se AllowEdit è impostata su true, è possibile modificare i contenuti del DataRow mediante DataRowView. È possibile confermare le modifiche alla riga sottostante mediante DataRowView.EndEdit o rifiutare tali modifiche mediante DataRowView.CancelEdit. Si noti che è possibile modificare una sola riga alla volta. Se si chiama il metodo AddNew o BeginEdit di DataRowView mentre è presente una riga in sospeso, EndEdit viene chiamato implicitamente per la riga in sospeso. Quando EndEdit viene chiamato, le modifiche proposte vengono inserite nella versione di riga Current del DataRow sottostante ed è possibile confermarle o rifiutarle in un secondo momento mediante i metodi AcceptChanges o RejectChanges degli oggetti DataTable, DataSet o DataRow. Se AllowEdit è impostata su false, in caso di tentativo di modifica di un valore in DataView viene generata un'eccezione.

Quando un DataRowView esistente viene modificato, gli eventi della DataTable sottostante vengono ancora generati con le modifiche proposte. Si noti che se si chiama EndEdit o CancelEdit nel DataRow sottostante, le modifiche in sospeso verranno applicate o annullate indipendentemente dalla chiamata o meno di EndEdit o CancelEdit per DataRowView.

Se AllowDelete è impostata su true, è possibile eliminare righe da DataView mediante il metodo Delete dell'oggetto DataView o DataRowView e le righe verranno cancellate dalla DataTable sottostante. È possibile confermare o rifiutare le eliminazioni in un secondo momento rispettivamente mediante i metodi AcceptChanges o RejectChanges. Se AllowDelete è impostata su false, in caso di chiamata del metodo Delete di DataView o DataRowView viene generata un'eccezione.

L'esempio di codice seguente consente di disattivare la possibilità di eliminare righe mediante DataView e consente di aggiungere nuove righe alla tabella sottostante mediante DataView.

Dim custTable As DataTable = custDS.Tables("Customers")
Dim custView As DataView = custTable.DefaultView
custView.Sort = "CompanyName"

custView.AllowDelete = False

Dim newDRV As DataRowView = custView.AddNew()
newDRV("CustomerID") = "ABCDE"
newDRV("CompanyName") = "ABC Products"
newDRV.EndEdit()
[C#]
DataTable custTable = custDS.Tables["Customers"];
DataView custView = custTable.DefaultView;
custView.Sort = "CompanyName";

custView.AllowDelete = false;

DataRowView newDRV = custView.AddNew();
newDRV["CustomerID"] = "ABCDE";
newDRV["CompanyName"] = "ABC Products";
newDRV.EndEdit();

Vedere anche

Creazione e utilizzo di DataView | Classe DataTable | Classe DataView | Classe DataRowView