Modifica di oggetti DataView

È possibile usare il DataView per aggiungere, eliminare o modificare righe di dati nella tabella sottostante. La possibilità di usare 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 la proprietà AllowNew è true, è possibile usare il metodo AddNew del DataView per creare un nuovo DataRowView. Notare 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 del DataRowView, la nuova riga verrà eliminata. Notare inoltre che è possibile modificare solo un DataRowView alla volta. Se si chiama il metodo AddNew o BeginEdit del DataRowView mentre è presente una riga in sospeso, EndEdit viene chiamato implicitamente per la riga in sospeso. Quando viene chiamato EndEdit, le modifiche vengono applicate alla DataTable sottostante ed è possibile eseguirne il commit o rifiutarle in un secondo momento mediante i metodi AcceptChanges o RejectChanges dell'oggetto DataTable, DataSet o DataRow. Se la proprietà AllowNew è false, in caso di chiamata del metodo AddNew del DataRowView viene generata un'eccezione.

Se la proprietà AllowEdit è true, è possibile modificare il contenuto del DataRow mediante il DataRowView. È possibile confermare le modifiche alla riga sottostante mediante DataRowView.EndEdit o rifiutare tali modifiche mediante DataRowView.CancelEdit. Notare che è possibile modificare solo una riga alla volta. Se si chiama il metodo AddNew o BeginEdit del DataRowView mentre è presente una riga in sospeso, EndEdit viene chiamato implicitamente per la riga in sospeso. Quando viene chiamato EndEdit, le modifiche proposte vengono inserite nella versione di riga Current del DataRow sottostante ed è possibile confermarle o rifiutarle in un secondo momento mediante il metodo AcceptChanges o RejectChanges dell'oggetto DataTable, DataSet o DataRow. Se AllowEdit è false, viene generata un'eccezione se si prova a modificare un valore in DataView.

Quando un DataRowView esistente viene modificato, gli eventi della DataTable sottostante vengono ancora generati con le modifiche proposte. Notare 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 il DataRowView.

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

Nell'esempio di codice seguente viene disabilitata la possibilità di eliminare righe mediante l'oggetto DataView e vengono aggiunte nuove righe alla tabella sottostante mediante l'oggetto 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()  
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();  

Vedi anche