Partager via


Vue d'ensemble du contrôle DataGrid (Windows Forms)

Mise à jour : novembre 2007

Remarque :

Le contrôle DataGridView remplace le contrôle DataGrid et lui ajoute des fonctionnalités ; toutefois, le contrôle DataGrid est conservé pour la compatibilité descendante et l'utilisation future si tel est votre choix. Pour plus d'informations, consultez Différences entre les contrôles DataGridView et DataGrid Windows Forms.

Le contrôle DataGrid Windows Forms affiche des données dans une grille de lignes et de colonnes. Dans le cas le plus simple, la grille est liée à une source de données par une seule table qui ne contient pas de relations. Dans ce cas, les données apparaissent tout simplement dans des lignes et des colonnes, comme dans une feuille de calcul. Pour plus d'informations sur la liaison des données à d'autres contrôles, consultez Liaison de données et Windows Forms.

Si DataGrid est lié aux données par plusieurs tables connexes et que la navigation est activée dans la grille, celle-ci affiche des développeurs sur chaque ligne. À l'aide d'un expanseur, l'utilisateur peut effectuer un déplacement d'une table parente à une table enfant. Cliquez sur un nœud pour afficher la table enfant ou sur le bouton Précédent pour revenir à la table parente d'origine. Dans cette manière, la grille affiche les relations hiérarchiques entre les tables.

La capture d'écran suivante illustre un contrôle DataGrid liés aux données par plusieurs tables.

Contrôle DataGrid lié aux données par plusieurs tables

Contrôle DataGrid lié aux données par plusieurs tables

DataGrid peut fournir une interface utilisateur pour un groupe de données, la possibilité de naviguer entre des tables connexes ainsi que des fonctionnalités puissantes d'édition et de mise en forme.

L'affichage et la manipulation des données sont deux fonctions distinctes : le contrôle gère l'interface utilisateur, alors que l'architecture de liaison de données des Windows Forms et les fournisseurs de données .NET Framework gèrent les mises à jour des données. C'est la raison pour laquelle plusieurs contrôles liés à la même source de données restent synchrones.

Remarque pour Visual Basic :

Si vous connaissez le contrôle DataGrid de Visual Basic 6.0, vous constaterez d'importantes différences par rapport au contrôle DataGrid Windows Forms.

Lorsque la grille est liée à un DataSet, les colonnes et les lignes sont automatiquement créées, mises en forme et remplies. Pour plus d'informations, consultez Liaison de données et Windows Forms. Suite à la génération du contrôle DataGrid, vous pouvez ajouter, supprimer, réorganiser et mettre en forme des colonnes et des lignes en fonction de vos besoins.

Liaison de données au contrôle

Pour que le contrôle DataGrid fonctionne, il doit être lié à une source de données à l'aide des propriétés DataSource et DataMember au moment du design ou de la méthode SetDataBinding au moment de l'exécution. Cette liaison pointe le DataGrid vers un objet de source de données instancié, tel qu'un DataSet ou DataTable). Le contrôle DataGrid affiche les résultats des actions qui sont exécutées sur les données. La plupart des actions spécifiques aux données ne sont pas effectuées par le biais de DataGrid, mais par celui de la source de données.

Si les données du groupe de données lié sont mises à jour par le biais d'un mécanisme quelconque, ces modifications sont répercutées dans le contrôle DataGrid. Si la valeur false est affectée à la propriété ReadOnly de la grille de données ainsi que de ses styles de table et de colonne, les données du groupe de données peuvent être mises à jour par le biais du contrôle DataGrid.

DataGrid ne peut afficher qu'une seule table à la fois. Si une relation parent-enfant est définie entre des tables, l'utilisateur peut se déplacer entre les tables connexes afin de sélectionner la table à afficher dans le contrôle DataGrid. Pour plus d'informations sur la liaison d'un contrôle DataGrid à une source de données ADO.NET au moment du design ou de l'exécution, consultez Comment : lier le contrôle DataGrid Windows Forms à une source de données.

Les sources de données valides pour DataGrid sont les suivantes :

Si la source est un groupe de données, il peut s'agir d'un objet du formulaire ou d'un objet passé au formulaire par un service Web XML. Vous pouvez effectuer des liaisons à des groupes de données typés ou non typés.

Vous pouvez également lier un contrôle DataGrid à d'autres structures si les objets de celles-ci, c'est-à-dire les éléments d'un tableau, par exemple, exposent des propriétés publiques. La grille affichera toutes les propriétés publiques des éléments de la structure. Si, par exemple, vous liez le contrôle DataGrid à un tableau d'objets représentant des clients, la grille affichera toutes les propriétés publiques de ces objets. Dans certains cas, cela implique que bien qu'une liaison du contrôle à cette structure soit possible, cette structure liée résultante n'a peut-être pas d'application pratique. Par exemple, vous pouvez lier le contrôle à un tableau d'entiers. Cependant, comme le type de données Integer ne prend pas en charge de propriété publique, la grille ne peut afficher de données.

Il est possible de lier le contrôle aux structures suivantes si leurs éléments exposent des propriétés publiques :

  • Tout composant qui implémente l'interface IList. (y compris les tableaux à une dimension).

  • Tout composant qui implémente l'interface IListSource.

  • Tout composant qui implémente l'interface IBindingList.

Pour plus d'informations sur les sources de données possibles, consultez Sources de données prises en charge par les Windows Forms.

Affichage de la grille

Un usage fréquent du contrôle DataGrid consiste à afficher une table de données unique à partir d'un groupe de données. Ce contrôle peut toutefois être employé pour afficher plusieurs tables, et notamment des tables connexes. L'affichage de la grille est ajusté automatiquement en fonction de la source de données. Le tableau suivant illustre les éléments qui s'affichent pour diverses configurations.

Contenu du groupe de données

Éléments affichés

Une seule table :

La table est affichée dans une grille.

Plusieurs tables :

la grille peut affiche une arborescence que les utilisateurs peuvent parcourir pour localiser la table recherchée.

Plusieurs tables connexes :

la grille peut afficher une arborescence pour y sélectionner des tables ou afficher la table parente, Les enregistrements dans la table parente permettent aux utilisateurs d'accéder aux lignes enfants connexes.

Remarque :

Les tables dans un groupe de données sont liées à l'aide d'un DataRelation.

Lorsque le contrôle DataGrid affiche une table et que la propriété AllowSorting a la valeur true, vous pouvez opérer un nouveau tri des données en cliquant sur les en-têtes de colonne. L'utilisateur peut également ajouter des lignes et modifier des cellules.

Les relations entre un jeu de tables sont affichées à l'attention des utilisateurs en utilisant une structure parent/enfant de navigation. Les tables parentes constituent le plus haut niveau de données ; les tables enfants sont des tables de données dérivées des différentes listes affichées dans les tables parentes. Des développeurs sont affichés dans chaque ligne parente contenant une table enfant. Un clic sur un expanseur permet de générer une liste de liens de type Web vers les tables enfants. Lorsque l'utilisateur sélectionne un lien, la table enfant s'affiche. Un clic sur l'icône d'affichage/masquage des lignes parentes (Icône Afficher/masquer les lignes parentes) masque les informations concernant la table parente ou les fait réapparaître si elles étaient masquées. L'utilisateur peut cliquer sur un bouton Précédent pour revenir à la table précédemment affichée.

Colonnes et lignes

Le DataGrid se compose d'une collection d'objets DataGridTableStyle qui sont contenus dans la propriété TableStyles du contrôle DataGrid. Un style de table peut contenir une collection d'objets DataGridColumnStyle qui sont contenus dans la propriété GridColumnStyles du DataGridTableStyle. Vous pouvez modifier les propriétés TableStyles et GridColumnStyles en utilisant les éditeurs de collections accessibles via la fenêtre Propriétés.

Tout DataGridTableStyle associé au contrôle DataGrid est accessible via le GridTableStylesCollection. Le GridTableStylesCollection peut être modifié dans le concepteur à l'aide de l'éditeur de collections DataGridTableStyle ou par programme à l'aide de la propriété TableStyles du contrôle DataGrid.

Le code suivant présente le contrôle utilisateur contenu dans la page.

Objets inclus dans le contrôle DataGrid

Les styles de table et de colonne sont synchronisés aux objets DataTable et aux objets DataColumn, leurs propriétés MappingName ayant pour valeur les propriétés TableName et ColumnName appropriées. Lorsqu'un DataGridTableStyle qui n'a pas de styles de colonne est ajouté à un contrôle DataGrid lié à une source de données valide et lorsque la propriété MappingName de ce style de table a pour valeur une propriété TableName valide, une collection d'objets DataGridColumnStyle est créée pour ce style de table. Pour chaque DataColumn trouvé dans la collection Columns du DataTable, un DataGridColumnStyle correspondant est ajouté au GridColumnStylesCollection. GridColumnStylesCollection est accessible via la propriété GridColumnStyles du DataGridTableStyle. Des colonnes peuvent être ajoutées ou supprimées de la grille à l'aide de la méthode Add ou Remove sur le GridColumnStylesCollection. Pour plus d'informations, consultez Comment  : ajouter des tables et des colonnes au contrôle DataGrid Windows Forms et Comment : supprimer ou masquer des colonnes dans le contrôle DataGrid Windows Forms.

Une collection de types de colonne développe la classe DataGridColumnStyle en la dotant de fonctions avancées de mise en forme et d'édition. Tous les types de colonne héritent de la classe de base DataGridColumnStyle. La classe créée dépend de la propriété DataType du DataColumn sur laquelle le DataGridColumn est basé. Par exemple, un DataColumn dont la propriété DataType a la valeur Boolean sera associé au DataGridBoolColumn. Le tableau suivant décrit chacun de ces types de colonnes.

Type de colonne

Description

DataGridTextBoxColumn

Accepte et affiche les données sous forme de chaînes mises en forme ou non. Les fonctions d'édition sont identiques à celles permettant de modifier des données dans un TextBox simple. Hérite de DataGridColumnStyle.

DataGridBoolColumn

Accepte et affiche true, false et des valeurs null. Hérite de DataGridColumnStyle.

Pour redimensionner une colonne afin que sa légende et l'entrée la plus longue soient entièrement visibles, double-cliquez sur son bord droit.

Styles de table et de colonne

Dès que vous avez établi le format par défaut du contrôle DataGrid, vous pouvez personnaliser les couleurs qui sont utilisées lorsque certaines tables sont affichées dans la grille de données.

Pour cela, il faut créer des instances de la classe DataGridTableStyle. Les styles de table spécifient la mise en forme de tables spécifiques, différente de la mise en forme par défaut du contrôle DataGrid proprement dit. Un seul style peut être défini à la fois pour une même table.

Vous souhaiterez peut-être qu'une colonne spécifique ait une apparence différente des autres colonnes d'une table de données particulière. Vous pouvez créer un jeu personnalisé de styles de colonne à l'aide de la propriété GridColumnStyles.

Les styles de colonne sont liés aux colonnes dans un groupe de données de la même manière que les styles de table sont liés aux tables de données. Étant donné que chaque table ne peut avoir qu'un seul style de table défini à la fois, chaque colonne ne peut également avoir qu'un seul style de colonne défini, dans un style de table particulier. Cette relation est définie dans la propriété MappingName de la colonne.

Si vous avez créé un style de table sans y avoir ajouté de styles de colonne, Visual Studio ajoute des styles de colonne par défaut lorsque le formulaire et la grille sont créés au moment de l'exécution. Toutefois, si vous avez créé un style de table et y avez ajouté des styles de colonne, Visual Studio ne crée pas de styles de colonne. De même, vous devrez définir des styles de colonne et les assigner avec le nom de mappage afin que les colonnes souhaitées s'affichent dans la grille.

Étant donné que vous spécifiez les colonnes qui sont incluses dans la grille de données en leur assignant un style de colonne et qu'aucun style de colonne n'a été assigné aux colonnes, vous pouvez inclure des colonnes de données dans le groupe de données qui n'est pas affiché dans la grille. Toutefois, étant donné que la colonne de données est incluse dans le groupe de données, vous pouvez modifier par programme les données qui ne sont pas affichées.

Remarque :

Créez généralement des styles de colonne et ajoutez-les à la collection correspondante avant d'ajouter des styles de table à la collection correspondante. Lorsque vous ajoutez une table vide à la collection, les styles de colonne sont générés automatiquement. Par conséquent, une exception est levée si vous essayez d'ajouter de nouveaux styles de colonne à la collection de styles de colonne avec des valeurs MappingName dupliquées.

Vous souhaiterez peut-être modifier une seule colonne parmi d'autres ; par exemple, le groupe de données contient 50 colonnes et vous en souhaitez seulement 49. Dans ce cas, il est plus facile d'importer les 50 colonnes et d'en supprimer une par programme, plutôt que d'ajouter par programme chacune des 49 colonnes souhaitées.

Mise en forme

Il est possible de mettre en forme le contrôle DataGrid en définissant ses styles de bordure et de quadrillage, ses polices, ses propriétés de légende, l'alignement de ses données et l'alternance des couleurs à l'arrière-plan des lignes. Pour plus d'informations, consultez Comment : mettre en forme le contrôle DataGrid Windows Forms.

Événements

En plus des événements de contrôle communs tels que MouseDown, Enter et Scroll, le contrôle DataGrid prend en charge des événements associés à la modification et à la navigation dans la grille. La propriété CurrentCell détermine la cellule sélectionnée. L'événement CurrentCellChanged est déclenché lorsque l'utilisateur navigue vers une nouvelle cellule. Lorsque l'utilisateur navigue vers une nouvelle table via des relations parent-enfant, l'événement Navigate est déclenché. L'événement BackButtonClick est déclenché lorsque l'utilisateur clique sur le bouton Précédent alors qu'une table enfant est affichée, et l'événement ShowParentDetailsButtonClick est déclenché lorsque l'utilisateur clique sur l'icône d'affichage/masquage des lignes parentes.

Voir aussi

Tâches

Comment : lier le contrôle DataGrid Windows Forms à une source de données

Comment  : ajouter des tables et des colonnes au contrôle DataGrid Windows Forms

Comment : supprimer ou masquer des colonnes dans le contrôle DataGrid Windows Forms

Comment : mettre en forme le contrôle DataGrid Windows Forms

Autres ressources

DataGrid, contrôle (Windows Forms)