Comment : modifier des lignes dans un DataTable
Pour modifier une ligne existante dans un DataTable, vous devez rechercher le DataRow à modifier, puis assigner les valeurs mises à jour aux colonnes souhaitées.
Les exemples suivants montrent comment rechercher et modifier des lignes dans des groupes de données typés et non typés.
Modification d'un enregistrement dans un DataTable lorsque vous ne connaissez pas l'index de la ligne à modifier
En général, vous ne connaissez pas l'index de la ligne à modifier. Les tables de données contenues dans des groupes de données typés sont créées avec une méthode FindBy qui utilise la clé primaire de la table pour rechercher une ligne.
Pour mettre à jour des enregistrements existants dans des groupes de données typés (l'index de la ligne est inconnu)
Assignez un DataRow spécifique à une variable à l'aide de la méthode FindBy générée, puis utilisez cette variable pour accéder aux colonnes que vous souhaitez modifier et leur assigner de nouvelles valeurs.
Dans l'exemple suivant, la colonne CustomerID est la clé primaire de la table Customers. Par conséquent, la méthode FindBy générée est FindByCustomerID. Cet exemple suppose que vous ayez généré un dataset typé nommé NorthwindDataSet et une instance de dataset typé nommé northwindDataSet1.
Dim customersRow As NorthwindDataSet.CustomersRow customersRow = NorthwindDataSet1.Customers.FindByCustomerID("ALFKI") customersRow.CompanyName = "Updated Company Name" customersRow.City = "Seattle"
NorthwindDataSet.CustomersRow customersRow = northwindDataSet1.Customers.FindByCustomerID("ALFKI"); customersRow.CompanyName = "Updated Company Name"; customersRow.City = "Seattle";;
En général, vous ne connaissez pas l'index de la ligne à modifier. Les tables de données contenues dans des groupes de données non typés sont créées avec une méthode Select qui retourne un tableau de DataRows.
Pour mettre à jour des enregistrements existants dans des groupes de données non typés (l'index de la ligne est inconnu)
Utilisez la méthode Select du DataTable pour rechercher une ligne spécifique et assigner de nouvelles valeurs aux colonnes souhaitées
Dans l'exemple suivant, la colonne CustomerID est la clé primaire de la table Customers. Par conséquent, l'appel à la méthode Select et la recherche de la clé primaire ne permettent de détecter qu'une seule ligne. Le type de retour est également un tableau de DataRows. Vous accédez donc à l'index (0), ou à la première ligne, du tableau. Cet exemple suppose que vous disposiez d'un dataset nommé dataSet1.
Dim customerRow() As Data.DataRow customerRow = DataSet1.Tables("Customers").Select("CustomerID = 'ALFKI'") customerRow(0)("CompanyName") = "Updated Company Name" customerRow(0)("City") = "Seattle"
DataRow[] customerRow = dataSet1.Tables["Customers"].Select("CustomerID = 'ALFKI'"); customerRow[0]["CompanyName"] = "Updated Company Name"; customerRow[0]["City"] = "Seattle";
Modification d'un enregistrement dans un DataTable lorsque vous connaissez l'index de la ligne à modifier
Pour mettre à jour des enregistrements existants à l'aide de groupes de données typés (l'index de la ligne est connu)
Assignez une valeur à la colonne dans un objet DataRow.
Les groupes de données typés utilisent la liaison anticipée, qui permet d'exposer les noms de table et de colonne en tant que propriétés au moment du design. Ceci permet de faciliter l'écriture et la lecture du code.
L'exemple suivant montre comment mettre à jour les données des colonnes CompanyName et City du cinquième enregistrement de la table Customers dans le groupe de données. Cet exemple suppose que vous ayez généré un dataset typé nommé NorthwindDataSet et une instance de dataset typé nommé northwindDataSet1.
NorthwindDataSet1.Customers(4).CompanyName = "Updated Company Name" NorthwindDataSet1.Customers(4).City = "Seattle"
northwindDataSet1.Customers[4].CompanyName = "Updated Company Name"; northwindDataSet1.Customers[4].City = "Seattle";
Pour mettre à jour des enregistrements existants dans des groupes de données non typés (l'index de la ligne est connu)
Assignez une valeur une colonne spécifique dans un objet DataRow.
Les noms de table et de colonne des groupes de données non typés ne sont pas disponibles au moment du design ; vous devez y accéder à partir de leurs indices respectifs.
L'exemple suivant illustre la mise à jour des données dans les deux premières colonnes du cinquième enregistrement de la première feuille de calcul dans dataSet1. Cet exemple suppose que la première table dans dataSet1 corresponde à la table Customers de la base de données Northwind, et que les deux premières colonnes de cette table correspondent aux colonnes CompanyName et City.
DataSet1.Tables(0).Rows(4).Item(0) = "Updated Company Name" DataSet1.Tables(0).Rows(4).Item(1) = "Seattle"
dataSet1.Tables[0].Rows[4][0] = "Updated Company Name"; dataSet1.Tables[0].Rows[4][1] = "Seattle";
L'exemple suivant montre comment mettre à jour les mêmes valeurs que dans l'exemple précédent, non plus à partir des indices de collection, mais en passant les noms de table et de colonnes en tant que chaînes. Vous devez toujours connaître l'index de la ligne pour la modifier.
DataSet1.Tables("Customers").Rows(4).Item("CompanyName") = "Updated Company Name" DataSet1.Tables("Customers").Rows(4).Item("City") = "Seattle"
dataSet1.Tables["Customers"].Rows[4]["CompanyName"] = "Updated Company Name"; dataSet1.Tables["Customers"].Rows[4]["City"] = "Seattle";
Voir aussi
Concepts
Ajout de données à un objet DataTable
Liaison de contrôles Windows Forms à des données dans Visual Studio
Liaison de contrôles à des données dans Visual Studio
Autres ressources
Connexion aux données dans Visual Studio
Préparation de votre application pour recevoir des données
Extraction de données dans votre application
Modification des données dans votre application
Historique des modifications
Date |
Historique |
Motif |
---|---|---|
Septembre 2010 |
Exemples de code C# modifiés pour utiliser ItemsArray plutôt que Items. |
Résolution des bogues de contenu. |