Comment lier un élement du combo avec son identifiant dans un textbox [Résolu]

niyericsson 30 Messages postés lundi 9 avril 2012Date d'inscription 17 juillet 2014 Dernière intervention - 19 juil. 2012 à 08:19 - Dernière réponse : Whismeril 11411 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 22 avril 2018 Dernière intervention
- 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..
Afficher la suite 

13 réponses

Répondre au sujet
niyericsson 30 Messages postés lundi 9 avril 2012Date d'inscription 17 juillet 2014 Dernière intervention - 19 juil. 2012 à 17:18
+3
Utile
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..
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de niyericsson
cs_jopop 1540 Messages postés lundi 26 mai 2003Date d'inscription 1 août 2013 Dernière intervention - 19 juil. 2012 à 08:39
0
Utile
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
Commenter la réponse de cs_jopop
niyericsson 30 Messages postés lundi 9 avril 2012Date d'inscription 17 juillet 2014 Dernière intervention - 19 juil. 2012 à 09:58
0
Utile
Merci Jopop,
je vais essayer ta solution et je vais te faire signe
apres le resultat..

a plus!!
Commenter la réponse de niyericsson
Whismeril 11411 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 22 avril 2018 Dernière intervention - 19 juil. 2012 à 10:08
0
Utile
Bonjour,
si tu bindes ton datagridview et ton textbox par l'intermédiaire d'un databingsource ça devrait le faire tout seul




Whismeril
Commenter la réponse de Whismeril
niyericsson 30 Messages postés lundi 9 avril 2012Date d'inscription 17 juillet 2014 Dernière intervention - 19 juil. 2012 à 10:32
0
Utile
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..
Commenter la réponse de niyericsson
niyericsson 30 Messages postés lundi 9 avril 2012Date d'inscription 17 juillet 2014 Dernière intervention - 19 juil. 2012 à 10:55
0
Utile
salut whismeril,

pouriez vous m'expliquer votre proposition??

merci encore une fois pour votre aide..
Commenter la réponse de niyericsson
cs_jopop 1540 Messages postés lundi 26 mai 2003Date d'inscription 1 août 2013 Dernière intervention - 19 juil. 2012 à 11:31
0
Utile
As-tu modifié ta requête comme je te l'ai notifié plus haut ?
Commenter la réponse de cs_jopop
niyericsson 30 Messages postés lundi 9 avril 2012Date d'inscription 17 juillet 2014 Dernière intervention - 19 juil. 2012 à 14:11
0
Utile
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..
Commenter la réponse de niyericsson
Whismeril 11411 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 22 avril 2018 Dernière intervention - 19 juil. 2012 à 14:50
0
Utile
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
Commenter la réponse de Whismeril
cs_jopop 1540 Messages postés lundi 26 mai 2003Date d'inscription 1 août 2013 Dernière intervention - 19 juil. 2012 à 15:13
0
Utile
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();
}
Commenter la réponse de cs_jopop
niyericsson 30 Messages postés lundi 9 avril 2012Date d'inscription 17 juillet 2014 Dernière intervention - 19 juil. 2012 à 17:14
0
Utile
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..
Commenter la réponse de niyericsson
cs_jopop 1540 Messages postés lundi 26 mai 2003Date d'inscription 1 août 2013 Dernière intervention - 19 juil. 2012 à 17:15
0
Utile
De rien l'ami, pense juste à noter "Réponse acceptée" ;)
Commenter la réponse de cs_jopop
Whismeril 11411 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 22 avril 2018 Dernière intervention - 19 juil. 2012 à 18:26
0
Utile
Pas de problème, valide la réponse de jopop pour clore le sujet

Whismeril
Commenter la réponse de Whismeril

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.