Deux propriétés dans Combobox

[Résolu]
Signaler
Messages postés
361
Date d'inscription
jeudi 5 février 2004
Statut
Membre
Dernière intervention
1 octobre 2010
-
Messages postés
361
Date d'inscription
jeudi 5 février 2004
Statut
Membre
Dernière intervention
1 octobre 2010
-
 Bonjour je souhaitais savoir comment afficher deux propriété de la base de donnée dans une seule liste deroulante en c#.net si qqun peut m'aider.
Merci.

9 réponses

Messages postés
38
Date d'inscription
vendredi 31 mai 2002
Statut
Membre
Dernière intervention
6 juillet 2011

Salut,
Je comprends comment tu veux faire mais je ne sais pas bien comment fonctionne la propriété DisplayMember.
J'aurais plutôt fait une boucle qui parcoure toutes les lignes de ta table et qui concatène ce qu'il faut. Comme ceci (à peu près) :

foreach(DataRow ligne in dsSorts.Tables["sorts"].Rows)
{
ListeSorts.Items.Add(ligne["sor_nom"] + " " + ligne["sor_lvl"]);
}

C'est sûrement moins direct que ta façon mais je pense que c'est une solution.
Seb.
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
97
Salut,

En dessinant toi même l'item afin de gérer ce comportement.
Voir DrawMode et DrawItem.

/*
coq
MVP Visual C#
*/
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
97
Et MeasureItem.

/*
coq
MVP Visual C#
*/
Messages postés
361
Date d'inscription
jeudi 5 février 2004
Statut
Membre
Dernière intervention
1 octobre 2010

Coucou c'est gentil de m'avoir mis sur la voie mais à vrai dire j'y comprend rien :/
Tu pourrais pas pousser un peu plus les pistes s'il te plait ? lol.
Merci.
Messages postés
38
Date d'inscription
vendredi 31 mai 2002
Statut
Membre
Dernière intervention
6 juillet 2011

Salut,
Si pour toi propriétés = champs d'une table de ma base de données. Alors pourquoi ne pas concaténer simplement les deux champs (séparés par un espace, un tiret, ...) puis ajouter le résultat à ta liste déroulante ?

Seb.
Messages postés
361
Date d'inscription
jeudi 5 février 2004
Statut
Membre
Dernière intervention
1 octobre 2010

Bjour, oui afficher deux champs je n'arrive pas a concaténer :

  DataSet dsSorts = charger.ChargerSorts();
            ListeSorts.DataSource = dsSorts.Tables["sorts"];
            ListeSorts.DisplayMember = "sor_nom" + "sor_lvl";

   public DataSet ChargerSorts()
        {
            MySqlConnection sqlCon = new MySqlConnection();
            string ConnnectionStr = "Database=dd;Data Source=localhost;User Id=root;Password=";

            sqlCon.ConnectionString = ConnnectionStr;

            string req = "select * from sorts";

            sqlCon.Open();
            MySqlDataAdapter da = new MySqlDataAdapter(req, sqlCon);

            DataSet ds = new DataSet();
            da.Fill(ds, "sorts");

            return ds;
        }

et sa m'ecris  sa dans la liste deroulante

System.Data.DataRowView
System.Data.DataRowView

Merci
Messages postés
361
Date d'inscription
jeudi 5 février 2004
Statut
Membre
Dernière intervention
1 octobre 2010

;o) bah ca fonctionne tout bien.
Mais si ma base contient 300ligne ca va pas etre un peu long a charger?
En tout cas merci c'est deja une tres bonne solution pour le moment, car sa m'enervais lol.
Messages postés
38
Date d'inscription
vendredi 31 mai 2002
Statut
Membre
Dernière intervention
6 juillet 2011

Je ne pense pas que 300 lignes vont être difficiles à charger... mais tu auras sûrement un petit temps d'attente quand tu auras 8000 enregistrements dans ta base de données.
Par contre, je ne sais pas si utiliser DisplayMember aurait accélé l'exécution du programme car, en définitive, il doit faire une boucle aussi.

Seb.
Messages postés
361
Date d'inscription
jeudi 5 février 2004
Statut
Membre
Dernière intervention
1 octobre 2010

Oki bah merci bien pour tout ses renseignement et la de toute facon ca fonctionne a merveille ;o)
Bonne continuation.