Problème DataSource => Combobox

Signaler
Messages postés
24
Date d'inscription
mercredi 18 décembre 2002
Statut
Membre
Dernière intervention
24 février 2009
-
Messages postés
1
Date d'inscription
lundi 19 février 2007
Statut
Membre
Dernière intervention
23 mai 2009
-
Bonjour, je débute en C#, j'espère que vous pourrez m'aider.
Voici mon problème :
Je dispose d'une base de données Access, je voudrais récupérer 2 champs d'une table (ID et Intitule) et afficher l'intitulé dans mon contrôle ComboBox. Jusque là, pas de soucis, mais j'aimerais que lorsqu'un item de mon Combobox est sélectionné, une MessageBox contenant l'ID apparaisse. Hors, avec mon code, la MessageBox ne m'affiche pas l'ID en lui-même, mais le texte "ID".
Voici mon code, si vous pouvez jeter un oeil et me dire ce qui cause celà, je vous en serais très reconnaissant.
Merci d'avance :-)

        private void FrmTest_Load(object sender, EventArgs e)
        {
            string MyConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + DBDatasource;

            OleDbConnection MyCn = new OleDbConnection();
            MyCn.ConnectionString = MyConnectionString;
            MyCn.Open();

            DataSet MyDs = new DataSet();
            OleDbDataAdapter MyDa = new OleDbDataAdapter();

            MyDa.SelectCommand = new OleDbCommand( "SELECT * FROM T_EtatCivil",MyCn);
            MyDa.Fill(MyDs);
            comboBox1.DataSource = MyDs.Tables[0];
            comboBox1.DisplayMember = "Intitule";
            comboBox1.ValueMember = "ID";
            MyDa.Dispose();
            MyDs.Dispose();
            MyCn.Close();
            MyCn.Dispose();
        }

        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            MessageBox.Show(comboBox1.ValueMember.ToString());
        }

7 réponses

Messages postés
24
Date d'inscription
mercredi 18 décembre 2002
Statut
Membre
Dernière intervention
24 février 2009
1
Hum, je viens de me rendre compte que je n'ai pas spécifié sur quel Item il devait afficher la ValueMember, mais alors... comment faire ?
Messages postés
327
Date d'inscription
mardi 17 février 2004
Statut
Membre
Dernière intervention
10 avril 2010
8
Salut,

MessageBox.Show(comboBox.SelectemValue.ToString()); non?
Messages postés
24
Date d'inscription
mercredi 18 décembre 2002
Statut
Membre
Dernière intervention
24 février 2009
1
Merci pour ta réponse WishhhMaster.
Hmmmm, non, ça ne semble pas fonctionner comme ça.
Ma box contient des éléments non triés, ça me renvoie dans l'ordre "1,2,3,4,5,6,..."
Et pareil si je les trie, donc il ne semble pas me renvoyer la valeur du champ ID :/
Messages postés
102
Date d'inscription
vendredi 13 juin 2008
Statut
Membre
Dernière intervention
24 janvier 2013

Tu as testé avec une structure???

Du genre :

struct TaStructure
        {
            public int _Id;
            public string _Intitule;

            public int Id
            {
                get { return _Id; }
                set {_ID = Value; }
            }
            public string Intitule
            {
                get { return _Intitule; }
                set {_Intitule = Value; }
            }
        }

Que tu renseigne à partir de ton résultat de requête et que tu intègre dans ta ComboBox .

Ce n'est qu'un idée, jespère au moins que ça te mettras sur la voie.
Messages postés
24
Date d'inscription
mercredi 18 décembre 2002
Statut
Membre
Dernière intervention
24 février 2009
1
Ah non, effectivement.... J'essaie de suite, merci :-)
Messages postés
276
Date d'inscription
lundi 8 septembre 2008
Statut
Membre
Dernière intervention
15 avril 2013
2
Ces lignes me semblent un rien scabreuses :

comboBox1.DataSource = MyDs.Tables[0];
comboBox1.DisplayMember = "Intitule";
 comboBox1.ValueMember = "ID";
 MyDa.Dispose();
 MyDs.Dispose();
 MyCn.Close();
 MyCn.Dispose();

Tu détruit MyDs alors que comboBox1.DataSource lui fait référence. En C++ ce serait le plantage assuré. Je préconiserai de ne pas invoquer Dispose sur tes objets et de laisser faire le garbage collector.
Messages postés
1
Date d'inscription
lundi 19 février 2007
Statut
Membre
Dernière intervention
23 mai 2009

té encore là ou pas?