Comportement ComboBox [Résolu]

olibara 670 Messages postés dimanche 16 décembre 2007Date d'inscription 11 mars 2010 Dernière intervention - 4 mars 2008 à 12:40 - Dernière réponse : olibara 670 Messages postés dimanche 16 décembre 2007Date d'inscription 11 mars 2010 Dernière intervention
- 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
lemmingperceval 128 Messages postés mardi 18 décembre 2007Date d'inscription 2 août 2009 Dernière intervention - 4 mars 2008 à 14:08
3
Merci
Salut,

Essaie:

int

currentCodePostal = 1598;

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

Merci lemmingperceval 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 102 internautes ce mois-ci

Commenter la réponse de lemmingperceval
olibara 670 Messages postés dimanche 16 décembre 2007Date d'inscription 11 mars 2010 Dernière intervention - 4 mars 2008 à 15:55
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
lemmingperceval 128 Messages postés mardi 18 décembre 2007Date d'inscription 2 août 2009 Dernière intervention - 4 mars 2008 à 16:00
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
lemmingperceval 128 Messages postés mardi 18 décembre 2007Date d'inscription 2 août 2009 Dernière intervention - 4 mars 2008 à 16:05
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
olibara 670 Messages postés dimanche 16 décembre 2007Date d'inscription 11 mars 2010 Dernière intervention - 4 mars 2008 à 16:28
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
lemmingperceval 128 Messages postés mardi 18 décembre 2007Date d'inscription 2 août 2009 Dernière intervention - 4 mars 2008 à 16:31
0
Merci
Du débuguage, tu as quoi dans Items[ ]?
Commenter la réponse de lemmingperceval
lemmingperceval 128 Messages postés mardi 18 décembre 2007Date d'inscription 2 août 2009 Dernière intervention - 4 mars 2008 à 16:42
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
olibara 670 Messages postés dimanche 16 décembre 2007Date d'inscription 11 mars 2010 Dernière intervention - 4 mars 2008 à 17:09
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
olibara 670 Messages postés dimanche 16 décembre 2007Date d'inscription 11 mars 2010 Dernière intervention - 4 mars 2008 à 18:19
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

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.