Comportement ComboBox [Résolu]

Messages postés
670
Date d'inscription
dimanche 16 décembre 2007
Statut
Membre
Dernière intervention
11 mars 2010
- - Dernière réponse : olibara
Messages postés
670
Date d'inscription
dimanche 16 décembre 2007
Statut
Membre
Dernière intervention
11 mars 2010
- 4 mars 2008 à 18:19
Bonjour,

J'ai toujours du mal avec les combobox

J'utilise un combobox que j'ai remplis (par query) avec une liste de codes postaux

J'aimerais afficher ce combo en selectionnant initialement une valeur venant d'un DGV (le code postal de l'adresse choisie par l'utilisateur)

Exemple le code postal 2000 qui existe

SelectedValue="2000";         // insulte
SelectedText=2000 ;           // insulte
"Cannot set the SelectedValue in a ListControl with an empty ValueMember."

SelectedText
Meme chose

SelectedIndex=2000; // Ok mais ce n'est pas ca que je cherche car je veux afficher la valeur, Je ne connais pas l'index du CP 2000 !!

Suis-je obligé de parcourir le combo pour connaitre l'index de la valeur a afficher ?
A quoi sert SelectedText et Value ?
Afficher la suite 

Votre réponse

9 réponses

Meilleure réponse
Messages postés
128
Date d'inscription
mardi 18 décembre 2007
Statut
Membre
Dernière intervention
2 août 2009
2
3
Merci
Salut,

Essaie:

int

currentCodePostal = 1598;

this.cmbCodePostal.SelectedItem = cmbCodePostal.Items[cmbCodePostal.Items.IndexOf(currentCodePostal)];

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 152 internautes nous ont dit merci ce mois-ci

Commenter la réponse de lemmingperceval
Messages postés
670
Date d'inscription
dimanche 16 décembre 2007
Statut
Membre
Dernière intervention
11 mars 2010
1
0
Merci
A mon avis j'ai encore pas capté un truc

L'exemple suivant me rends -1 sur cmb_post.Items.IndexOf(2000);
idem si je fais cmb_post.Items.IndexOf("2000");

<!-- BEGIN TEMPLATE: bbcode_code -->

Code :
string selectcmd = "SELECT PostCode FROM `address` group by PostCode ";
adaCP.SelectCommand = new MySqlCommand(selectcmd, MyConn.conn);
adaCP.Fill(dsCP);
cmb_post.DataSource = dsCP.Tables[0];
cmb_post.DisplayMember = dsCP.Tables[0].Columns[0].Caption;
cmb_post.Visible = true;
cmb_post.SelectedIndex=cmb_post.Items.IndexOf(2000);
Commenter la réponse de olibara
Messages postés
128
Date d'inscription
mardi 18 décembre 2007
Statut
Membre
Dernière intervention
2 août 2009
2
0
Merci
ok attend,
S'il te retourne -1 ca veut dire qu'il n'a pas trouver l'élément dans la collection d'item de ton comboBox.
Ton code postal est de quel type? int? string?
Commenter la réponse de lemmingperceval
Messages postés
128
Date d'inscription
mardi 18 décembre 2007
Statut
Membre
Dernière intervention
2 août 2009
2
0
Merci
Et si tu mets:
cmb_post.Items[cmb_post.Items.IndexOf("2000") => si ton code postal est de type string
et:
cmb_post.Items[cmb_post.Items.IndexOf(2000) => si ton code postal est de type int
Commenter la réponse de lemmingperceval
Messages postés
670
Date d'inscription
dimanche 16 décembre 2007
Statut
Membre
Dernière intervention
11 mars 2010
1
0
Merci
Oui


C'est effectivement ce que je voulais voir


A priori c'est de l'int mais mais aucun des deux ne fonctionne : ni int ni string . Je me demande si ca n'est pas lié avec DisplayMember, displayValue et tout ce bingz etant donné que mon combo a comme datasource un dataset !


 
Commenter la réponse de olibara
Messages postés
128
Date d'inscription
mardi 18 décembre 2007
Statut
Membre
Dernière intervention
2 août 2009
2
0
Merci
Du débuguage, tu as quoi dans Items[ ]?
Commenter la réponse de lemmingperceval
Messages postés
128
Date d'inscription
mardi 18 décembre 2007
Statut
Membre
Dernière intervention
2 août 2009
2
0
Merci
Ecoute, tu as dans l'idée de faire quoi avec ton appli?
Je veux dire, elle servira à quoi? Le fonctionnement.
Commenter la réponse de lemmingperceval
Messages postés
670
Date d'inscription
dimanche 16 décembre 2007
Statut
Membre
Dernière intervention
11 mars 2010
1
0
Merci
Il y a une piste effectivement mes items contiennent des datarowview !!

Je vais m'emmerder a caster ca

Ce que je veux faire : c'est simple : je remplis mon combo a l'aide d'un query
Si un utilisateur choisi un row de DGV a modifier, je le présente dans un formulaire avec un champ CP qui est un Combo montrant le CP initial mais il peut le changer a l'aide du combo

      string selectcmd = "SELECT PostCode FROM `address` group by PostCode ";
      adaCP.SelectCommand = new MySqlCommand(selectcmd, MyConn.conn);
      adaCP.Fill(dsCP);
      cmb_post.DataSource = dsCP.Tables[0];
      cmb_post.DisplayMember = dsCP.Tables[0].Columns[0].Caption;
      cmb_post.Visible = true;
      cmb_post.SelectedIndex=cmb_post.Items.IndexOf(2000); 
Commenter la réponse de olibara
Messages postés
670
Date d'inscription
dimanche 16 décembre 2007
Statut
Membre
Dernière intervention
11 mars 2010
1
0
Merci
Et voila enfin la solution trouvée sur Code Project

string selectcmd = "SELECT PostCode FROM `address` group by PostCode ";
adaCP.SelectCommand = new MySqlCommand(selectcmd, MyConn.conn);
adaCP.Fill(dsCP);
cmb_post.DataSource = dsCP.Tables[0];




// bind value member of combobox to datatable
cmb_post.ValueMember = dsCP.Tables[0].Columns[0].ColumnName;

cmb_post.DisplayMember = dsCP.Tables[0].Columns[0]. ColumnName ;

// select item
cmb_post.SelectedValue = 2000;
Commenter la réponse de olibara