Comportement ComboBox

Résolu
olibara Messages postés 666 Date d'inscription dimanche 16 décembre 2007 Statut Membre Dernière intervention 11 mars 2010 - 4 mars 2008 à 12:40
olibara Messages postés 666 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 ?

9 réponses

lemmingperceval Messages postés 128 Date d'inscription mardi 18 décembre 2007 Statut Membre Dernière intervention 2 août 2009 6
4 mars 2008 à 14:08
Salut,

Essaie:

int

currentCodePostal = 1598;

this.cmbCodePostal.SelectedItem = cmbCodePostal.Items[cmbCodePostal.Items.IndexOf(currentCodePostal)];
3
olibara Messages postés 666 Date d'inscription dimanche 16 décembre 2007 Statut Membre Dernière intervention 11 mars 2010 6
4 mars 2008 à 15:55
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);
0
lemmingperceval Messages postés 128 Date d'inscription mardi 18 décembre 2007 Statut Membre Dernière intervention 2 août 2009 6
4 mars 2008 à 16:00
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?
0
lemmingperceval Messages postés 128 Date d'inscription mardi 18 décembre 2007 Statut Membre Dernière intervention 2 août 2009 6
4 mars 2008 à 16:05
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
olibara Messages postés 666 Date d'inscription dimanche 16 décembre 2007 Statut Membre Dernière intervention 11 mars 2010 6
4 mars 2008 à 16:28
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 !


 
0
lemmingperceval Messages postés 128 Date d'inscription mardi 18 décembre 2007 Statut Membre Dernière intervention 2 août 2009 6
4 mars 2008 à 16:31
Du débuguage, tu as quoi dans Items[ ]?
0
lemmingperceval Messages postés 128 Date d'inscription mardi 18 décembre 2007 Statut Membre Dernière intervention 2 août 2009 6
4 mars 2008 à 16:42
Ecoute, tu as dans l'idée de faire quoi avec ton appli?
Je veux dire, elle servira à quoi? Le fonctionnement.
0
olibara Messages postés 666 Date d'inscription dimanche 16 décembre 2007 Statut Membre Dernière intervention 11 mars 2010 6
4 mars 2008 à 17:09
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); 
0
olibara Messages postés 666 Date d'inscription dimanche 16 décembre 2007 Statut Membre Dernière intervention 11 mars 2010 6
4 mars 2008 à 18:19
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;
0
Rejoignez-nous