Modification des données dans un contrôle serveur Web GridView
Mise à jour : novembre 2007
Le contrôle GridView possède des fonctionnalités intégrées permettant aux utilisateurs de modifier ou de supprimer des enregistrements sans nécessiter de programmation. Vous pouvez personnaliser la fonction d'édition ou de suppression du contrôle GridView à l'aide d'événements et de modèles.
Activation de la fonctionnalité d'édition intégrée
Vous pouvez activer la fonctionnalité d'édition ou de suppression intégrée du contrôle GridView de l'une des façons suivantes :
En affectant la valeur true à la propriété AutoGenerateEditButton pour permettre la mise à jour, et la valeur true à la propriété AutoGenerateDeleteButton pour permettre la suppression.
En ajoutant un contrôle CommandField, la propriété ShowEditButton ayant la valeur true, pour permettre la mise à jour, et la propriété ShowDeleteButton ayant la valeur true, pour permettre la suppression.
En créant un contrôle TemplateField dont la propriété ItemTemplate contient des boutons de commande avec la valeur "Edit" pour mise à jour et "Delete" pour suppression affectées à la propriété CommandName. Pour plus d'informations, consultez Création d'une colonne personnalisée dans un contrôle serveur Web GridView.
Comment fonctionne l'édition dans le contrôle GridView
Le contrôle GridView peut afficher une interface utilisateur pour permettre aux utilisateurs de modifier le contenu de lignes individuelles. En général, une grille modifiable contient une colonne comportant un bouton ou un lien sur lequel les utilisateurs peuvent cliquer pour mettre la ligne en mode Édition. (Par défaut, la légende du bouton est "Modifier".)
Lorsque les utilisateurs enregistrent une modification, le contrôle GridView transmet les modifications et les informations de clé primaire au contrôle de source de données, identifié par la propriété DataSourceID qui appelle l'opération de mise à jour appropriée. Par exemple, le contrôle SqlDataSource exécute une instruction SQL Update en utilisant les données modifiées comme valeurs de paramètre. Le contrôle ObjectDataSource appelle sa méthode de mise à jour, en transmettant les modifications comme paramètres à l'appel de méthode.
Le contrôle GridView transmet les valeurs à la source de données pour une opération de mise à jour ou de suppression dans trois collections de dictionnaires : le dictionnaire Keys , le dictionnaire NewValues et le dictionnaire OldValues. Vous pouvez accéder à chaque dictionnaire à l'aide des arguments transmis aux événements de mise à jour ou de suppression du contrôle GridView.
Le dictionnaire Keys contient les noms et valeurs des champs qui identifient de manière unique l'enregistrement à mettre à jour ou à supprimer, et contient toujours les valeurs d'origine des champs clés. Pour spécifier les champs qui sont placés dans le dictionnaire Keys, affectez à la propriété DataKeyNames une liste avec la virgule comme séparateur des noms de champs qui représentent la clé primaire de vos données. La collection DataKeys est remplie automatiquement avec les valeurs associées aux champs spécifiés pour la propriété DataKeyNames.
Remarque : |
---|
Les valeurs de clés primaires d'origine pour les champs spécifiés dans la propriété DataKeyNames sont stockées dans l'état d'affichage. Si vos valeurs de clés primaires contiennent des informations sensibles, vous devez chiffrer le contenu de l'état d'affichage en affectant à la propriété ViewStateEncryptionMode de la page la valeur Always. |
Le dictionnaire NewValues contient les valeurs actuelles des contrôles d'entrée dans la ligne modifiée. Le dictionnaire OldValues contient les valeurs d'origine des champs, à l'exception des champs clés qui sont inclus dans le dictionnaire Keys.
Le contrôle de source de données utilise les valeurs des dictionnaires Keys, NewValues et OldValues comme paramètres de la commande de mise à jour ou de suppression. Pour plus d'informations sur la création des paramètres de contrôle de source de données en fonction des dictionnaires créés pour les valeurs liées, consultez Comment un contrôle de source de données crée des paramètres pour des champs liés aux données.
Vous pouvez examiner ou personnaliser le contenu de chacun de ces dictionnaires avant qu'il soit transmis à la source de données en gérant les événements RowUpdating ou RowDeleting. Une fois la mise à jour ou la suppression terminée, le contrôle GridView déclenche son événement RowUpdated ou RowDeleted. Ces événements vous permettent d'exécuter une logique après requête, des contrôles d'intégrité par exemple.
Une fois la mise à jour ou la suppression terminée et tous les événements déclenchés, le contrôle GridView est lié de nouveau au contrôle de source de données pour afficher les données mises à jour.
Remarque : |
---|
Les valeurs d'origine des champs pouvant être mis à jour dans un contrôle GridView sont stockées dans ViewState. Si ViewState est désactivé sur une page ASP.NET qui contient un contrôle GridView pouvant être mis à jour, les contrôles d'accès concurrentiel optimiste ne peuvent pas utiliser les valeurs d'origine pour les champs clés pouvant être mis à jour et primaires qui ont été récupérés lorsque le contrôle GridView a d'abord été lié à la source de données. Lorsque la page est publiée automatiquement pour effectuer une mise à jour ou une suppression, les valeurs actuelles de la base de données sont récupérées comme valeurs d'origine pour les champs clés pouvant être mis à jour et primaires dans le contrôle GridView parce qu'aucune valeur n'est stockée dans ViewState. L'opération de mise à jour ou de suppression est alors exécutée à l'aide de ces valeurs d'origine. Si les valeurs d'origine ont changé depuis que le contrôle GridView a été initialement rempli, la mise à jour ou la suppression réussira, mais le contrôle d'accès concurrentiel optimiste ne signalera pas un échec comme il devrait le faire. |
Personnalisation des interfaces utilisateur d'édition dans le contrôle GridView
Vous pouvez personnaliser les éléments d'édition, tels que le type de contrôle affiché en mode Édition pour chaque champ de données. La liaison de données bidirectionnelle automatique permet à votre contrôle personnalisé de fournir les valeurs modifiables et modifiées, vers et depuis le magasin de données.
Remarque : |
---|
Si vous modifiez l'instruction de mise à jour dans un contrôle de source de données ou si vous réorganisez les colonnes dans le contrôle GridView, assurez-vous toujours que les valeurs transmises par le contrôle GridView à la source de données sont conformes à la configuration de la source de données correspondante. |
Voir aussi
Concepts
Vue d'ensemble des contrôles de source de données