DataGridComboBox with Enum

Signaler
Messages postés
5
Date d'inscription
lundi 9 mai 2005
Statut
Membre
Dernière intervention
20 mai 2005
-
Messages postés
5
Date d'inscription
lundi 9 mai 2005
Statut
Membre
Dernière intervention
20 mai 2005
-
Salut,



J'ai passé un long moment à chercher un DataGridComboBoxStyle... J'ai
pu en trouver un grand nombre, mais aucun d'entre eux ne m'a permis de
faire ce que je souhaité. Je me remet donc en question. La solution est
probablement très simple mais je n'arrive pas à la trouver.



Aujourd'hui j'utilise des ComboBox que je "Bind" sur des enums. Pour cela, je fais quelque chose du genre:



myComboBox.DataSource = Enum.GetValues(typeof (E_PROGRAM_ROLE));



Ca, ca marche très bien. Maintenant, lorsque j'essaye la même pratique
dans un DataGridComboBoxStyle, J'ai des erreurs m'indiquant que je me
dois de préciser ValueMember et DisplayMember, ce que je ne faisais pas
dans mon premier cas d'utilisation. Je sais comment extraire ces infos
d'un dataset ou d'un dataview, mais pour ce qui est d'un Enum, il faut
dire que je sèche...



J'apprécierais beaucoup votre coup de main =P

Merci d'avance.

5 réponses

Messages postés
346
Date d'inscription
lundi 8 septembre 2003
Statut
Membre
Dernière intervention
3 septembre 2007
3
A tout hazard, est ce que tu as essayé :
ValueMember = "Value" ou "Object"

mais c'est vraiment au pif
Messages postés
5
Date d'inscription
lundi 9 mai 2005
Statut
Membre
Dernière intervention
20 mai 2005

Yup j'ai essayé... j'ai tenté ValueMember =
typeof(E_PROGRAM_ROLE).GetName() aussi... Mais je dois dire que je
m'embrouille pas mal entre ValueMember et DisplayMember...
Messages postés
346
Date d'inscription
lundi 8 septembre 2003
Statut
Membre
Dernière intervention
3 septembre 2007
3
ValueMember, c'est la valeur que te revoit la combo par la propriété SelectedValue
DisplayMember, c'est la colonne de ta liste affichée dans le combo
Il 'nest pas nécessaire de remplir les deux , je crois que displayMember suffit

Si tu ne t'en sort pas en faisant comme cela, tu peux toujours ajouter ta liste à la liste des items

ccombo.items.addrange( (object[] )Enum.GetValues(typeof (E_PROGRAM_ROLE))); mais je sais pas si ca marche, c'est un peu au pif

Avant, essaie un truc du style
combo.DisplayMember = typeof(E_PROGRAM_ROLE).tostring() ou "Value" vue que c'est une array qui est renvoyée par le GetValues, la combo hésite peut etre entre Index et Value ou "String" ou "Object" ou "Int" on sait jamais , et tu met la meme chose dans ValueMember
Messages postés
346
Date d'inscription
lundi 8 septembre 2003
Statut
Membre
Dernière intervention
3 septembre 2007
3
Petite précision entre valuemember et displaymember, je m'en sers pas mal , mais principalement avec des datatables, du style une datatable référence avec deux colonnes code et libellé

combo.datasource = reference;
combo.DisplayMember = "libellé";
comob.ValueMember ="code";

Comme cela, la combo m'affiche le libellé mais ensuite, me renvoie le code correspond au libellé sélectionné par le biais de combo.SelectedValue ,c'est tres utile
Messages postés
5
Date d'inscription
lundi 9 mai 2005
Statut
Membre
Dernière intervention
20 mai 2005

Alors c'est bien que j'avais compris... Je vais reprendre mes investigations... Merci