Comment : créer une table de correspondance pour un contrôle ComboBox, ListBox ou CheckedListBox Windows Forms
Mise à jour : novembre 2007
Il est parfois utile d'afficher les données sous un format convivial dans un Windows Form, mais de les stocker sous un format plus pertinent pour votre programme. Par exemple, un formulaire de commande de produits alimentaires peut présenter les éléments de menu par leur nom dans une zone de liste. Toutefois, la table de données dans laquelle est enregistrée la commande peut contenir les numéros d'ID uniques représentant les produits alimentaires. Les tableaux suivants fournissent un exemple de stockage et d'affichage de données du formulaire de commande de produits alimentaires.
OrderDetailsTable
OrderID |
ItemID |
Quantity |
---|---|---|
4085 |
12 |
1 |
4086 |
13 |
3 |
ItemTable
ID |
Nom |
---|---|
12 |
Potato |
13 |
Chicken |
Dans ce scénario, une seule table, OrderDetailsTable, stocke les informations qu'il est réellement nécessaire d'afficher et d'enregistrer. Cependant, afin d'économiser de l'espace, elle stocke ces informations de façon plutôt insolite. L'autre table, ItemTable, contient uniquement des informations relatives à l'apparence sur les équivalences entre numéro d'ID et nom de produit alimentaire, mais rien en revanche sur les véritables commandes de produits alimentaires.
ItemTable est connectée au contrôle ComboBox, ListBox ou CheckedListBox par l'intermédiaire de trois propriétés. La propriété DataSource contient le nom de cette table. La propriété DisplayMember comprend la colonne de données de la table à afficher dans le contrôle (nom de produit alimentaire). La propriété ValueMember comporte la colonne de données de la table contenant les informations stockées (le numéro d'ID).
OrderDetailsTable est connectée au contrôle par sa collection de liaisons, accessible via la propriété DataBindings. En ajoutant un objet de liaison à la collection, vous connectez une propriété du contrôle à une donnée membre spécifique (la colonne des numéros d'ID) d'une source de données (OrderDetailsTable). Lorsqu'une sélection est effectuée dans le contrôle, c'est dans cette table que l'entrée du formulaire est enregistrée.
Pour créer une table de correspondance
Ajoutez un contrôle ComboBox, ListBox ou CheckedListBox au formulaire.
Connectez-vous à la source de données.
Établissez une relation de données entre les deux tables.
Définissez les propriétés suivantes. Ces propriétés peuvent être définies dans le code ou dans le concepteur.
Propriété
Valeur
Table qui contient des informations sur les équivalences entre un numéro d'ID et un article. Dans l'exemple précédent, il s'agit de la table ItemTable.
Colonne de la table de source de données que vous souhaitez afficher dans le contrôle. Dans l'exemple précédent, il s'agit de la colonne "Name" (à définir dans le code, en utilisant des guillemets).
Colonne de la table source de données contenant les informations stockées. Dans l'exemple précédent, il s'agit de la colonne "ID" (à définir dans le code, en utilisant des guillemets).
Dans une procédure, appelez la méthode Add de la classe ControlBindingsCollection pour lier la propriété SelectedValue du contrôle à la table dans laquelle sont enregistrées les données entrées dans le formulaire. Vous pouvez également effectuer cette opération dans le Concepteur plutôt que dans le code ; pour cela, accédez à la propriété DataBindings du contrôle dans la fenêtre Propriétés. Dans le scénario précédent, il s'agit de OrderDetailsTable et la colonne est "ItemID".
ListBox1.DataBindings.Add("SelectedValue", OrderDetailsTable, "ItemID")
listBox1.DataBindings.Add("SelectedValue", OrderDetailsTable, "ItemID");
listBox1.get_DataBindings().Add("SelectedValue", OrderDetailsTable, "ItemID");
Voir aussi
Concepts
Liaison de données et Windows Forms
Référence
Vue d'ensemble du contrôle ListBox (Windows Forms)
Vue d'ensemble du contrôle ComboBox (Windows Forms)
Vue d'ensemble du contrôle CheckedListBox (Windows Forms)
Autres ressources
Contrôles Windows Forms utilisés pour l'affichage de listes d'options