Share via


Comment : créer une table de correspondance pour un contrôle ComboBox, ListBox ou CheckedListBox Windows Forms

Il est parfois utile d'afficher les données dans un format convivial dans un Windows Form, mais de les stocker dans 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 la commande est enregistrée contient alors les numéros d'ID uniques représentant les produits alimentaires. Les tableaux ci-dessous montrent un exemple de stockage et d’affichage des données du formulaire de commande des produits alimentaires.

OrderDetailsTable

OrderID ItemID Quantity
4085 12 1
4086 13 3

ItemTable

Récompenses client Nom
12 Pomme de terre
13 Poulet

Dans ce scénario, une table, OrderDetailsTable, stocke les informations réelles que vous souhaitez afficher et enregistrer. Cependant, pour économiser de l'espace, elle procède d’une façon plutôt insolite. L’autre table , ItemTable, contient uniquement des informations relatives à l’apparence sur le numéro d’ID correspondant à quel nom de nourriture, et rien sur les commandes alimentaires réelles.

ItemTable est connecté au , ListBoxou CheckedListBox contrôle ComboBoxvia trois propriétés. La DataSource propriété contient le nom de cette table. La DisplayMember propriété contient la colonne de données de cette table que vous souhaitez afficher dans le contrôle (nom de la nourriture). La ValueMember propriété contient la colonne de données de cette table avec les informations stockées (numéro d’ID).

OrderDetailsTable est connecté au contrôle par sa collection de liaisons, accessible via la DataBindings propriété. Lorsque vous ajoutez un objet de liaison à la collection, vous connectez une propriété de contrôle à un membre de données spécifique (colonne des numéros d’ID) dans une source de données (OrderDetailsTable). Quand 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 choix

  1. Ajoutez un contrôle ComboBox, ListBox ou CheckedListBox au formulaire.

  2. Connectez-vous à la source de données.

  3. Établissez une relation de données entre les deux tables. Consultez Présentation des objets DataRelation.

  4. Définissez les propriétés suivantes. Elles peuvent être définies dans le code ou dans le concepteur.

    Propriété Paramètre
    DataSource Table qui contient des informations sur les équivalences entre les numéros d’ID et les articles. Dans le scénario précédent, il s’agit ItemTablede .
    DisplayMember Colonne de la table de source de données que vous souhaitez afficher dans le contrôle. Dans le scénario précédent, il s’agit "Name" (pour définir dans le code, utilisez des guillemets).
    ValueMember Colonne de la table de source de données qui contient les informations stockées. Dans le scénario précédent, il s’agit "ID" (pour définir dans le code, utilisez des guillemets).
  5. Dans une procédure, appelez la méthode Add de la classe ControlBindingsCollection pour lier la ppropriété SelectedValue du contrôle à la table d'enregistrement de l'entrée du formulaire. Vous pouvez également le faire dans le Concepteur au lieu du code, en accédant à la propriété du DataBindings contrôle dans la fenêtre Propriétés . Dans le scénario précédent, il s’agit OrderDetailsTable, et la colonne est "ItemID".

    ListBox1.DataBindings.Add("SelectedValue", OrderDetailsTable, "ItemID")  
    
    listBox1.DataBindings.Add("SelectedValue", OrderDetailsTable, "ItemID");  
    

Voir aussi