Datagridview et Liste <> [Résolu]

Messages postés
277
Date d'inscription
lundi 9 février 2004
Dernière intervention
4 mai 2008
- - Dernière réponse : Whismeril
Messages postés
12372
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
12 décembre 2018
- 18 oct. 2017 à 23:36
Bonjour à tous,

J'essaye de connecter une liste generique à un datagridview. Voici mon code :

 List<four> lstf= new List<four>();
          
            lstf.Add(new four(1, "toto", "tutu"));
            lstf.Add(new four(1, "toto1", "tutu1"));
            lstf.Add(new four(1, "toto2", "tutu2"));
           
              dataGridView1.DataSource = lstf ;

four etant une classe dont la structure est :

 class four
{
           public int id;
            public string valeur1;
            public string valeur2;

        public four(int i, string val1, string val2)
        {
            this.id = i;
            valeur1 = val1;
            valeur2 = val2;
        }
 }

Le problème est que rien ne s'affiche dans le datagridview. Aurais-je oublier quelque chose ?

Merci par avance.

duck88
Afficher la suite 

Votre réponse

10 réponses

Meilleure réponse
Messages postés
3489
Date d'inscription
lundi 16 octobre 2000
Dernière intervention
30 octobre 2008
3
Merci
Romagny -> non ce n'est pas bon ;)

Tu dois avoir une propriété (publique bien sur) avec un get; pour que ton champ soit visible via le binding. Simplement déclarer une variable publique ne suffira pas.

Mx
MVP C# 

Merci MorpionMx 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 102 internautes ce mois-ci

Commenter la réponse de MorpionMx
Messages postés
3489
Date d'inscription
lundi 16 octobre 2000
Dernière intervention
30 octobre 2008
0
Merci
Salut,

iI faut juste que ta class four expose des propriétés pour chaque objet que tu souhaites afficher dans ton DataGridView

Mx
MVP C# 
Commenter la réponse de MorpionMx
Messages postés
710
Date d'inscription
lundi 10 janvier 2005
Dernière intervention
27 août 2014
0
Merci
Non ca a l'air bon
par contre juste une idée regarde si ton datagridview a pas deja son databinding ou sa datasource de configurée(ce qui peut arriver par exemple si on le glisse depuis la fenetre source de données) ce qui il m'a semblé avoir deja observé peut poser des pb .

++
Commenter la réponse de romagny13
Messages postés
277
Date d'inscription
lundi 9 février 2004
Dernière intervention
4 mai 2008
0
Merci
Merci les gars,
Les propriétés sont exposés puisqu'elles sont en public. Aucun valeur dans le databinding ou le datasouce. C'est louche

duck88
Commenter la réponse de ducker88
Messages postés
277
Date d'inscription
lundi 9 février 2004
Dernière intervention
4 mai 2008
0
Merci
Ca y est ca marche impec.
Merci a vous deux pour votre aide.

duck88
Commenter la réponse de ducker88
Messages postés
710
Date d'inscription
lundi 10 janvier 2005
Dernière intervention
27 août 2014
0
Merci
erf oui j'avais pas vu il a du oublier "public" devant class four
Commenter la réponse de romagny13
Messages postés
3489
Date d'inscription
lundi 16 octobre 2000
Dernière intervention
30 octobre 2008
0
Merci
Nonon, que la class four soit publique ou non ne changerait rien dans son cas.
S'il voulait par exemple afficher la valeur de "valeur1" dans le DataGridView, il lui faut ajouter la propriété

<hr />
public
string Valeur1
{

   get {
return
this.valeur1; }
}
<hr />

Mx
MVP C# 
Commenter la réponse de MorpionMx
Messages postés
277
Date d'inscription
lundi 9 février 2004
Dernière intervention
4 mai 2008
0
Merci
Et c'est exactement ce que j'ai fait pour résoudre le problème

duck88
Commenter la réponse de ducker88
Messages postés
710
Date d'inscription
lundi 10 janvier 2005
Dernière intervention
27 août 2014
0
Merci
a oui exact (bon on va pas se laisser embeter par une liste generique qd mm lol)
en fait il manquait 2 choses :
- declarer la classe four en public (sinon on n'aura pas accés à cetet classe ce qui de tout facon retournera une erreur a la compilation avec un message type "accessibilté incoherente")
- des accesseurs pour chaque membre
ex : declarer un membre en private
private int  m_id;

le property correspondant :
public int id
{
get
{
return m_id;
}
set
{
m_id=value;
}
}

pendant que j'y suis si tu veux un peu personnaliser l'affichage du datgridview(ex: ne rendre que certaines colonnes visbles,definir une colonne en combobox,...) je te conseille de passer soit par un bindingsource,ou carrement gerer par code(en ajoutant les colonnes,cellules,lignes) cest ce sur quoi j'essaie de plancher en ce moment,car jke trouve ce control(datagridview) bien compliqué meme seulement pour gerer les 4 operations de bases (lister,ajouter une ligne,modifier une ligne,supprimer une ligne), ce pour quoi pourtant il est destiné lol
++
Commenter la réponse de romagny13
Messages postés
1
Date d'inscription
mercredi 18 octobre 2017
Dernière intervention
18 octobre 2017
0
Merci
bonsoir tout le monde,
bon je sais que le sujet commence à dater mais du coup je voulais savoir comment récupérer la ligne sélectionnée du datagridview sous forme d'objet (dans ce cas d'objet four)
Merci d'avance
Cordialement
Whismeril
Messages postés
12372
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
12 décembre 2018
-
Commenter la réponse de rollandSteph

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.