Modification des objets DataView (ADO.NET)
Vous pouvez utiliser l'objet DataView pour ajouter, supprimer ou modifier des lignes de données dans la table sous-jacente. La possibilité d'utiliser le DataView pour modifier des données dans la table sous-jacente est contrôlée par la définition d'une de ses trois propriétés de type booléen. Ces propriétés sont AllowNew, AllowEdit et AllowDelete. Par défaut, elles ont la valeur true.
Si AllowNew a la valeur true, vous pouvez utiliser la méthode AddNew du DataView pour créer un nouvel objet DataRowView. Notez qu'une nouvelle ligne n'est effectivement ajoutée à l'objet DataTable sous-jacent qu'après l'appel de la méthode EndEdit du DataRowView. Si la méthode CancelEdit du DataRowView est appelée, la nouvelle ligne est ignorée. Notez également que vous ne pouvez modifier qu'un DataRowView à la fois. Si vous appelez la méthode AddNew ou BeginEdit du DataRowView alors qu'une ligne en attente existe, la méthode EndEdit est implicitement appelée sur cette ligne. Lorsque la méthode EndEdit est appelée, les modifications sont apportées au DataTable sous-jacent et pourront ensuite être validées ou refusées à l'aide des méthodes AcceptChanges ou RejectChanges de l'objet DataTable, DataSet ou DataRow. Si AllowNew a la valeur false, une exception est levée si vous appelez la méthode AddNew du DataRowView.
Si AllowEdit a la valeur true, vous pouvez modifier le contenu d'un DataRow via le DataRowView. Vous pouvez confirmer les modifications à apporter à la ligne sous-jacente en utilisant DataRowView.EndEdit ou refuser ces modifications à l'aide de DataRowView.CancelEdit. Notez que vous ne pouvez modifier qu'une seule ligne à la fois. Si vous appelez la méthode AddNew ou BeginEdit du DataRowView alors qu'une ligne en attente existe, la méthode EndEdit est implicitement appelée sur cette ligne. Lorsque la méthode EndEdit est appelée, les modifications proposées sont placées dans la version de ligne Current du DataRow sous-jacent et pourront ensuite être validées ou refusées à l'aide de la méthode AcceptChanges ou RejectChanges de l'objet DataTable, DataSet ou DataRow. Si AllowEdit a la valeur false, une exception est levée si vous tentez de modifier une valeur du DataView.
Lorsqu'un DataRowView existant est en cours de modification, les événements du DataTable sous-jacent seront toujours déclenchés avec les modifications proposées. Notez que si vous appelez EndEdit ou CancelEdit sur le DataRow sous-jacent, les changements en attente seront appliqués ou annulés, que la méthode EndEdit ou CancelEdit soit ou non appelée sur le DataRowView.
Si AllowDelete a la valeur true, vous pouvez supprimer des lignes du DataView à l'aide de la méthode Delete de l'objet DataView ou DataRowView, et les lignes sont supprimées du DataTable sous-jacent. Vous pouvez par la suite valider ou refuser les suppressions à l'aide de AcceptChanges ou de RejectChanges respectivement. Si AllowDelete a la valeur false, une exception est levée si vous appelez la méthode Delete du DataView ou du DataRowView.
L'exemple de code suivant désactive la possibilité de supprimer des lignes à l'aide du DataView et ajoute une nouvelle ligne à la table sous-jacente à l'aide du 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();