Comment lier un élement du combo avec son identifiant dans un textbox

Résolu
niyericsson Messages postés 30 Date d'inscription lundi 9 avril 2012 Statut Membre Dernière intervention 17 juillet 2014 - 19 juil. 2012 à 08:19
Whismeril Messages postés 19025 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 19 avril 2024 - 19 juil. 2012 à 18:26
salut à tous,

je reviens encore une fois demander votre aide sur mon application.
au fait je voudrais savoir comment faire pour lier un element du combo
a son identifiant se trouvant dans un autre textbox.je m'explique avec le code
je crois que c'est mieux.

ceci est le code pour remplissage du combobox:

     DataTable dt = new DataTable();
              dt.Columns.Add("marque",typeof(System.String));
              this.cmboboxMarque.DataSource = dt;
              string query = "select marque from marqueVehicule order by marqueId";
              SqlCommand command = new SqlCommand(query,maConnexion);
              SqlDataReader olecteur = command.ExecuteReader();
              this.cmbMarque.DisplayMember = "marque";
              dt.Load(olecteur);
              this.cmboboxMarque.SelectedIndex = -1;
              cmboboxMarque.Text = "-- Choix de la marque --";


Alors ce que je veux c'est que si je sélectionne la marque dans le combobox
son identifiant s'affiche dans un textbox a côté de ce combobox.

je ne sais pas comment le faire.mais pour le combo j'arrive à selectionner
un élément mais pour son identifiant franchement je n'y arrive pas.

merci d'avance pour votre aide..

13 réponses

niyericsson Messages postés 30 Date d'inscription lundi 9 avril 2012 Statut Membre Dernière intervention 17 juillet 2014 1
19 juil. 2012 à 17:18
merci Whismeril

j'apprécie vraiment la manière dont vous m'avais
secouru et je m'excuse je n'avais pas vu le lien je l'ai visité
mais j'ai adopté la solution de Jopop car elle partait dans la meme logique
que j'avait commencé mais quand mm je vous dois une tres gde reconaissance

merci bcp..
3
cs_jopop Messages postés 1540 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 1 août 2013 12
19 juil. 2012 à 08:39
Salut,

le ComboBox possède un attribut qui s'appelle ValueMember (à mettre en opposition au DisplayMember) qui permet justement d'associer une valeur utile à ton item.

Ta requête doit donc faire un SELECT des deux champs, celui à afficher (marque) et celui à utiliser pour connaitre l'enregistrement (marqueId ?). Puis tu associe ce deuxième champ au ValueMember de ton ComboBox, de la même manière que tu le fais pour le DisplayMember.

Ensuite, il faut définir une fonction à associer à l'évènement SelectedIndexChanged de ton ComboBox. Son attribut SelectedValue contiendra alors la valeur (et nom le texte) de l'item sélectionné, que tu pourras alors écrire dans ta TextBox.

Bon dev
0
niyericsson Messages postés 30 Date d'inscription lundi 9 avril 2012 Statut Membre Dernière intervention 17 juillet 2014 1
19 juil. 2012 à 09:58
Merci Jopop,
je vais essayer ta solution et je vais te faire signe
apres le resultat..

a plus!!
0
Whismeril Messages postés 19025 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 19 avril 2024 656
19 juil. 2012 à 10:08
Bonjour,
si tu bindes ton datagridview et ton textbox par l'intermédiaire d'un databingsource ça devrait le faire tout seul




Whismeril
0

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

Posez votre question
niyericsson Messages postés 30 Date d'inscription lundi 9 avril 2012 Statut Membre Dernière intervention 17 juillet 2014 1
19 juil. 2012 à 10:32
salut jopop,

voici le message d'erreur que j'optiens lorsque
je tente avec votre solution:

"Cannot bind to the new value member."

est ce que ce n'est pas au fait qu'au moment d'ajout
des elements du colonnes le marqueId n'y est pas??

2ème ligne du code:

dt.Columns.Add("marque", typeof(System.String));


lorsque j'ai tenté d'ajouter le marqueId a cette ligne
j'optiens des erreurs...

si vous avez une idée aide moi s'il vous plaît...

merci pour votre aide..
0
niyericsson Messages postés 30 Date d'inscription lundi 9 avril 2012 Statut Membre Dernière intervention 17 juillet 2014 1
19 juil. 2012 à 10:55
salut whismeril,

pouriez vous m'expliquer votre proposition??

merci encore une fois pour votre aide..
0
cs_jopop Messages postés 1540 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 1 août 2013 12
19 juil. 2012 à 11:31
As-tu modifié ta requête comme je te l'ai notifié plus haut ?
0
niyericsson Messages postés 30 Date d'inscription lundi 9 avril 2012 Statut Membre Dernière intervention 17 juillet 2014 1
19 juil. 2012 à 14:11
salut,


oui jojop je l'ai modifiée elle est de la forme:

string query = " select marqueId,marque from marqueVehicule order by marqueId";


merci encore pour ton aide..
0
Whismeril Messages postés 19025 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 19 avril 2024 656
19 juil. 2012 à 14:50
pouriez vous m'expliquer votre proposition??


Je t'ai posté un lien, vers un tuto qui explqiue l'utilsation de l'objet databindingsource dont l'utilité est exactement ce que tu demandes.

Whismeril
0
cs_jopop Messages postés 1540 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 1 août 2013 12
19 juil. 2012 à 15:13
Ben je sais pas quoi te dire, je viens de tester le code auquel je pensais et il fonctionne chez moi, le voilà (ma BDD est MySQL, d'où les noms des objets qui diffèrent avec les tiens ; mon ComboBox se nomme cmbNames et ma TextBox txtSelectedId) :

* partie initialisation :
	string rqt =  "SELECT name, id FROM matable";
MySqlConnection cnx = new MySqlConnection("Data Source=localhost;Database=madb;User ID=user;Password=pass");

cnx.Open();

MySqlCommand cmd = new MySqlCommand(rqt, cnx);
MySqlDataAdapter ada = new MySqlDataAdapter(cmd);
DataSet res = new System.Data.DataSet();
ada.Fill(res);

cmbNames.DataSource = res.Tables[0];
cmbNames.DisplayMember = "name";
cmbNames.ValueMember = "id";

cnx.Close();


* l'event sur le changement de sélection du ComboBox :
private void cmbNames_SelectedIndexChanged (object sender, EventArgs e) {
txtSelectedId.Text  = cmbNames.SelectedValue.ToString();
}
0
niyericsson Messages postés 30 Date d'inscription lundi 9 avril 2012 Statut Membre Dernière intervention 17 juillet 2014 1
19 juil. 2012 à 17:14
merci beaucoup jopop votre solution est correcte
je viens de l'appliquer et elle a marché..

merci vraiment de la maniere dont vous m'avez porté secours
je vous suis vraiment trè reconaissant..

merci bcp a plus..
0
cs_jopop Messages postés 1540 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 1 août 2013 12
19 juil. 2012 à 17:15
De rien l'ami, pense juste à noter "Réponse acceptée" ;)
0
Whismeril Messages postés 19025 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 19 avril 2024 656
19 juil. 2012 à 18:26
Pas de problème, valide la réponse de jopop pour clore le sujet

Whismeril
0
Rejoignez-nous