IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

ListItem n'existe pas sur les combobox ?


Sujet :

Windows Forms

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    202
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 202
    Points : 43
    Points
    43
    Par défaut ListItem n'existe pas sur les combobox ?
    Bonjour,

    Je voudrais remplir manuellement un combobox (propriété Items).
    Le problème c'est que la méthode .Add sur Items ne prend qu'une seule valeur.
    Moi je voudrais pouvoir spécifier deux valeurs: Celles qui sera affichée et une valeur masquée qui sera un identifiant.
    De mémoire en asp.net, on pouvait créer un objet ListItem, qui acceptait ces deux valeurs.
    Je ne parviens pas à faire l'équivalent dans une appli winforms.

    D'avance merci pour vos réponses.

    A+

  2. #2
    Membre émérite Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Points : 2 925
    Points
    2 925
    Par défaut
    Il suffit de spécifier les propriétés "DisplayMember" et "ValueMember".

    Par exemple, si tu remplis ta combo avec ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    class Truc
    {
      int Id {get; set; }
      string Nom {get; set; }
    }
    Alors en affectant "DisplayMember" et "ValueMember" aux propriétés qui vont bien de ton objet source :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    taCombo.DisplayMember = "Nom";
    taCombo.ValueMember = "Id";
    DisplayMember va déterminer ce qui sera visible graphiquement. ValueMember sert notamment pour le binding ; il permet aussi d'utiliser la propriété "SelectedValue", qui dans cet exemple renverra l'id du Truc actuellement sélectionné dans la combo.
    ಠ_ಠ

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    202
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 202
    Points : 43
    Points
    43
    Par défaut
    merci pour ta réponse.

    Je connais cette technique.
    Simplement je trouve crado d'avoir à créer la classe "Truc".
    je m'attendais a ce qu'il existe une classe générique deja toute faite avec un id et un champ libellé

    A+

  4. #4
    Expert éminent
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Points : 7 660
    Points
    7 660
    Par défaut
    Le nom de la classe, Truc, à la rigueur est "crado" (dsl Guulh ). Mais sinon ce n'est absolument pas "crado" puisque le Framework ne fournit pas de classe pour ça.

    De mon côté, j'utilise toujours la classe suivante (même principe que la classe Truc).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public class ComboBoxItem<T>
    {
        public T Value { get; private set; }
        public string Display { get; private set; }
     
        public ComboBoxItem(T value, string display)
        {
            Value = value;
            Display = display;
        }
    }
    Pas de questions techniques par MP

  5. #5
    Membre émérite Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Points : 2 925
    Points
    2 925
    Par défaut
    Mais euh, j'aime bien, "Truc", moi, comme nom de classe...

    C'est à dire qu'en général, on n'a pas besoin de créer une classe exprès pour ça. Le binding permet, comme son nom l'indique, de lier des composants graphiques à des objets métiers ; donc si c'est des Pays que t'as dans ta combo, et que t'as une classe "Pays" pour le représenter, tu peux directement mettre ta List<Pays> comme DataSource de la combo, mettre le DisplayMember / ValueMember comme il faut et zou.

    Je vois pas trop dans quel contexte on peut se retrouver avec des couples ids / libellé qui soient pas dans une classe déjà existante, en fait
    ಠ_ಠ

  6. #6
    Expert éminent
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Points : 7 660
    Points
    7 660
    Par défaut
    Je m'en sers pour tout ce qui est Combo avec une énumération derrière. Et j'en ai beaucoup ^^

    A part ça, l'utilité est limitée car effectivement on a généralement déjà des objets métiers existants sur lesquels binder
    Pas de questions techniques par MP

  7. #7
    Membre émérite Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Points : 2 925
    Points
    2 925
    Par défaut
    J'avais pas pensé aux enums, en effet. Faut dire qu'ils font concurrence aux tables de base de données de type "id-libellé". Et ça, j'en ai beaucoup là où je bosse
    ಠ_ಠ

  8. #8
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    Salut

    Je profite de ce sujet pour poser une humble question

    Depuis quelques mois je croyais tout savoir sur l'usage d'un combo mais aujourd'hui je me casse les

    Bon ! tous mes combos sont normalement bindés a une datasource et j'utilise le Display Member et le value member.
    Si nécessaire je force un selectedValue et ca marche tres bien.

    Aujourd'hui j'ai besoin d'un bete combo tout simple qui propose un choix entre 91 et 95 (91,92..95)

    Pour faire simple, je tappe donc cela directement dans le designer dans la proprieté Items
    Puis au load de la form je fais cmb_x.SelectedValue = "91";

    Mais rien a faire je ne parviens pas a forcer une valeur selectée : ca reste vide;

    A part ca je peux evidemment choisir manuellement la valeur dans le combo

    Que n'ai-je pas encore compris ?
    « Ils ne savaient pas que c'était impossible, alors ils l'ont fait ». (Twain)

  9. #9
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    Bonsoir

    Pour la reponse a ma question, c'est moi qui suis idiot bien sur
    A force de jouer avec des datasource des Members et des Values
    J'avais pas capté tout de suite que si je charge une liste d'items dans le designer

    C'est un seletedItem que je dois forcer bien sur et pas un selectedValue !
    « Ils ne savaient pas que c'était impossible, alors ils l'ont fait ». (Twain)

Discussions similaires

  1. Réponses: 9
    Dernier message: 15/05/2006, 11h35
  2. [VBA-E]Aide sur les ComboBox
    Par Alex_Kidd dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 11/05/2006, 17h47
  3. Réponses: 4
    Dernier message: 03/04/2006, 08h50
  4. CSS : Bordure sur les liens mais pas sur les images ?
    Par monstroplante dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 04/02/2006, 14h18
  5. [CSS] border-collapse sur les TR mais pas sur les TD.
    Par hpfx dans le forum Mise en page CSS
    Réponses: 6
    Dernier message: 03/04/2005, 16h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo