warzet
Messages postés44Date d'inscriptionlundi 27 août 2007StatutMembreDernière intervention 1 novembre 2016
-
28 janv. 2014 à 08:38
Whismeril
Messages postés18643Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention 3 octobre 2023
-
29 janv. 2014 à 11:17
Bonjour à tous,
J'écris une application, où j'ai besoin de remplir un Combobox à partir d'une base de données Access et je dois y transférer le Nom et le Prénom simultanément. j'ai essayé ceci:
#region COMBO ENSEIGNANT
private void Combo_Enseignant() { try { //on remet le data_set a 0 DtS.Clear(); //on crée la connection a la base de données this.Conex.ConnectionString = this.strConex; //déclaration de la requete sql string sqlEnseignant = "SELECT code_personnel," + "\n" + "'" + (string.Concat("nom_personnel", " ", "prenom_personnel")) + "'AS nom" + "\n" + "FROM Enseigner, Personnels" + "\n" + "WHERE Enseigner.code_enseignant = Personnels.code_personnel" + "\n" + "ORDER BY '" + string.Concat("nom_personnel", " ", "prenom_personnel") + "'"; OleDbDataAdapter DtAEnsg = new OleDbDataAdapter(sqlEnseignant, this.Conex); //on leve l'exception try { //on rempli la dataset avec la table DtAEnsg.Fill(this.DtS, "Personnels");
this.xTotal = DtS.Tables[0].Rows.Count;
//on rempli la liste avec le dataset this.DtTEns = DtS.Tables["Personnels"];
//on rempli le ComboClass this.cboEnseignant.DataSource = this.DtTEns;
//Choix du champ de la liste this.cboEnseignant.DisplayMember = "'" + string.Concat("(Personnels.nom_personnel)" + " " + "(Personnels.prenom_personnel)'"); this.cboEnseignant.DisplayMember = (string.Concat("nom_personnel", " ", "prenom_personnel")); //choix de l'id du champs this.cboEnseignant.ValueMember = "code_personnel";
//on met la sélection vide //this.cboEnseignant.SelectedIndex = -1; this.cboEnseignant.Text = "---Sélectionnez Enseignant---"; this.cboEnseignant.Focus(); this.cboEnseignant.SelectAll(); this.txtCodeEnseignant.Text = "";
Whismeril
Messages postés18643Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention 3 octobre 2023629 28 janv. 2014 à 11:14
Bonjour,
si tu dois afficher Nom et Prénom (attention je ne dis pas faire 2 colonnes dans ton combobox), une solution est de charger tes données dans une List<T>:
public class Contact//ta classe perso
{
public string Nom { get; set; }
public string Prenom { get; set; }
public override string ToString()//je réécris ToString pour que soit affiché: "Je m'appelle Jean Sor"
{
return string.Format("Je m'appelle {0} (1}", Prenom, Nom);
}
}
}
Tu charges donc tes données dans une List<Contact> (mesContacts) et tu le mets en datasource de ton combobox.
cboEnseignant.DataSource = mesContact;
Si ça t'ennuie d'overider ToString tu peux écrire une propriété NomComplet
public class Contact
{
public string Nom { get; set; }
public string Prenom { get; set; }
public DateTime Naissance { get; set; }
public string NomComplet
{
get { return string.Format("{0} (1}", Prenom, Nom); }
}
public override string ToString()
{
return string.Format("Je m'appelle {0} (1}", Prenom, Nom);
}
}
Whismeril
Messages postés18643Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention 3 octobre 2023629 28 janv. 2014 à 13:23
A toi d'adapter ta classe métier à ton besoin, il te suffit d'ajouter une propriété code_enseignant.
Si tu utilises un databindingsource tu pourras faire s'afficher le dit code_enseignant dans un textbox dès la sélection par l'utilisateur, sans code particulier.
Tu pourras aussi récupérer l'enregistrement courant pour te servir de cette donnée.
Whismeril
Messages postés18643Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention 3 octobre 2023629 28 janv. 2014 à 13:26
PS je ne fait pas de base de données, alors pour le chargement de ta table Access, je ne t'aiderai pas beaucoup.
A mes début, j'aurais pu utiliser une connection Access, mais Linq n'était pas compatible (aujourd'hui je ne sais pas), et ayant environ 50 lignes d'enregistrements j'ai finit par faire du xml.
warzet
Messages postés44Date d'inscriptionlundi 27 août 2007StatutMembreDernière intervention 1 novembre 2016 29 janv. 2014 à 10:11
j'ai simplifié en créant une requête sous Access pour stocker le code du personnel et la concaténation du nom et du prénom auquel je fais appel ensuite dans mon combobox Merci à toi
Whismeril
Messages postés18643Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention 3 octobre 2023629 29 janv. 2014 à 11:17