Ändern von "DataViews"

Mit DataView können Datenzeilen in der zugrunde liegenden Tabelle hinzugefügt, gelöscht oder bearbeitet werden. Die Möglichkeit, mit dem DataView-Element Daten in der zugrunde liegenden Tabelle zu ändern, wird durch das Festlegen einer der drei booleschen Eigenschaften des DataView-Elements gesteuert. Bei diesen Eigenschaften handelt es sich um AllowNew, AllowEdit und AllowDelete. Sie sind standardmäßig auf true festgelegt.

Wenn AllowNew auf true festgelegt ist, können Sie die AddNew-Methode des DataView-Elements zum Erstellen eines neuen DataRowView-Elements verwenden. Beachten Sie, dass die neue Zeile dem zugrunde liegenden DataTable-Element erst hinzugefügt wird, wenn die EndEdit-Methode des DataRowView-Elements aufgerufen wird. Wenn die CancelEdit-Methode des DataRowView-Elements aufgerufen wird, wird die neue Zeile verworfen. Beachten Sie auch, dass Sie jeweils nur ein DataRowView-Element bearbeiten können. Wenn Sie die AddNew- bzw. BeginEdit-Methode des DataRowView-Elements aufrufen, während eine ausstehende Zeile vorhanden ist, wird EndEdit implizit für die ausstehende Zeile aufgerufen. Wenn EndEdit aufgerufen wird, werden die Änderungen auf das zugrunde liegende DataTable-Element angewendet und können später mithilfe der AcceptChanges- bzw. RejectChanges-Methode der Objekte DataTable, DataSet oder DataRow übernommen oder abgelehnt werden. Wenn AllowNew auf false festgelegt ist, wird beim Aufrufen der AddNew-Methode des DataRowView-Elements eine Ausnahme ausgelöst.

Wenn AllowEdit auf true festgelegt ist, können Sie mithilfe des DataRowView-Elements den Inhalt eines DataRow-Elements ändern. Mit DataRowView.EndEdit können Sie die Änderungen an der zugrunde liegenden Zeile bestätigen oder sie mit DataRowView.CancelEdit ablehnen. Beachten Sie, dass jeweils nur eine Zeile bearbeitet werden kann. Wenn Sie die AddNew- bzw. BeginEdit-Methode des DataRowView-Elements aufrufen, während eine ausstehende Zeile vorhanden ist, wird EndEdit implizit für die ausstehende Zeile aufgerufen. Wenn EndEdit aufgerufen wird, werden die vorgeschlagenen Änderungen in der Current-Zeilenversion des zugrunde liegenden DataRow-Elements platziert und können später mithilfe der AcceptChanges- bzw. RejectChanges-Methode der Objekte DataTable, DataSet oder DataRow übernommen oder abgelehnt werden. Wenn AllowEdit auf false festgelegt ist, wird bei dem Versuch, einen Wert im DataView-Element zu ändern, eine Ausnahme ausgelöst.

Wenn ein vorhandenes DataRowView-Element bearbeitet wird, werden Ereignisse des zugrunde liegenden DataTable-Elements weiterhin mit den vorgeschlagenen Änderungen ausgelöst. Wenn Sie EndEdit oder CancelEdit für das zugrunde liegende DataRow-Element aufrufen, werden ausstehende Änderungen angewendet oder verworfen, unabhängig davon, ob EndEdit oder CancelEdit für das DataRowView-Element aufgerufen wird.

Wenn AllowDelete auf true festgelegt ist, können Sie mit der Delete-Methode des DataView-Elements oder des DataRowView-Objekts Zeilen aus dem DataView-Element löschen. Die Zeilen werden aus dem zugrunde liegenden DataTable-Element gelöscht. Sie können die Löschvorgänge später mit AcceptChanges bzw. RejectChanges übernehmen oder ablehnen. Wenn AllowDelete auf false festgelegt ist, wird beim Aufrufen der Delete-Methode des DataView- bzw. DataRowView-Elements eine Ausnahme ausgelöst.

Im folgenden Codebeispiel wird das DataView-Element für das Löschen von Zeilen deaktiviert und mit dem DataView-Element der zugrunde liegenden Tabelle eine neue Zeile hinzugefügt.

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

Siehe auch