Bindingsource et datagridview

Signaler
Messages postés
8
Date d'inscription
lundi 27 avril 2009
Statut
Membre
Dernière intervention
11 mai 2009
-
Messages postés
1860
Date d'inscription
lundi 28 novembre 2005
Statut
Modérateur
Dernière intervention
14 février 2015
-
Bonjour !

Voilà j'aurais besoin d'un petit avis sur le problème que je me pose ...

Dans mon code je fais le lien entre mes listes que je souhaite afficher et mon datagridview par une bindingsource.
Jusqu'a present tout marche bien, j'ai bien l'affichage de chacune de mes variables de classe dans une colonne spécifique, avec la bonne valeur pour chacun des objets de la liste.

Le problème est que j'ai rajouté une variable de classe dans ma liste qui n'est pas d'un type classique comme "string" ou "int" ou "bool". C'est une variable du type d'une classe que j'ai crée. Dans mon datagrid, une colonne est bien apparu pour cette variable mais l'information qui est présente est juste l'emplacement de l'objet. (nomDuDomaine.nomDeLObjet, pour tous les objets de la liste).

Je voudrais savoir s'il est possible dans la cellule de faire apparaitre les propriétés de l'objet lui même, plutot que juste son emplacement.
Bien entendu j'ai essayé plusieurs recherches sur le net pour trouver une solution, mais elles sont restées infructueuses...

Merci d'avance pour vos idées, voire vos solutions !

4 réponses

Messages postés
1860
Date d'inscription
lundi 28 novembre 2005
Statut
Modérateur
Dernière intervention
14 février 2015
44
Salut.

Tes données sont donc du genre :

class mesDonnees
{
string MaProp1 {get; set; }
string MaProp2 {get; set; }
int MaProp3 {get; set; }
perso MaProp4 {get; set; }
}

class perso
{
string MaPropPerso1 {get; set; }
string MaPropPerso2 {get; set; }
}

Ce que tu souhaites, dans ta datagridview de "mesDonnees", c'est afficher MaProp1, MaProp2, MaProp3 et MaProp4.MaPropPerso2 par exemple ?

Tes colonnes sont créées automatiquement en fonction de tes variables ? Dans ce cas, tu ne peux pas directement je crois.
Cependant, tu dois pouvoir, lorsque tu crées toi-même une colonne, choisir la donnée que tu bind (donc tu peux mettre un attribut de ta variable).

Il existe un autre moyen, en gardant tes colonnes créées automatiquement, c'est de surcharger la méthode "ToString()" de ta classe "perso" :

public override string ToString()
{
    return MaPropPerso2;
}

Krimog : while (!(succeed = try())) ;
- NON, "LE BAR" n'est PAS un langage de programmation ! -
Messages postés
8
Date d'inscription
lundi 27 avril 2009
Statut
Membre
Dernière intervention
11 mai 2009

Ce que tu souhaites, dans ta datagridview de "mesDonnees", c'est
afficher MaProp1, MaProp2, MaProp3 et MaProp4.MaPropPerso2 par exemple ?

Oui c'est exactement ça. L'affichage de MaProp1, MaProp2, MaProp3 est bien effectué, je cherche à afficher MaProp4.MaPropPerso1 + MaProp4.MaPropPerso2 dans la meme cellule, plutôt que le nom de l'objet qui n'est pas une information très utile :s. Effectivement mes colonnes sont générées automatiquement en "bindant"
la source de ma dataGrid sur ma liste<mesDonnees> ( pour
reprendre ton exemple)

Je vais essayer la méthode ToString, effectivement ça pourrait être ce qu'il me faut !

Merci
Messages postés
8
Date d'inscription
lundi 27 avril 2009
Statut
Membre
Dernière intervention
11 mai 2009

Ca marche bien !

En revanche (c'est du chipotage peut être ^^) il n'a pas l'air d'accepter les "\n" pour afficher les propriétés les unes en dessous des autres dans la même cellule. A la place il me met un caractère rectangulaire. (j'ai aussi essayer avec \t il fait pareil)
Messages postés
1860
Date d'inscription
lundi 28 novembre 2005
Statut
Modérateur
Dernière intervention
14 février 2015
44
Oui, un dgv ne permet pas d'afficher plusieurs lignes dans une seule cellule je crois.
Ca fait quelques temps que je ne touche plus à Winforms, donc je n'affirme rien, mais peut-être qu'une listbox ou un listview te permettra d'aboutir à ce que tu veux.

Krimog : while (!(succeed = try())) ;
- NON, "LE BAR" n'est PAS un langage de programmation ! -