Datagridview et Liste <>

Résolu
ducker88
Messages postés
277
Date d'inscription
lundi 9 février 2004
Statut
Membre
Dernière intervention
4 mai 2008
- 12 févr. 2007 à 12:18
Whismeril
Messages postés
17682
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
16 août 2022
- 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

10 réponses

MorpionMx
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Membre
Dernière intervention
30 octobre 2008
57
12 févr. 2007 à 13:46
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# 
3
MorpionMx
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Membre
Dernière intervention
30 octobre 2008
57
12 févr. 2007 à 12:30
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# 
0
romagny13
Messages postés
687
Date d'inscription
lundi 10 janvier 2005
Statut
Membre
Dernière intervention
27 août 2014
3
12 févr. 2007 à 13:22
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 .

++
0
ducker88
Messages postés
277
Date d'inscription
lundi 9 février 2004
Statut
Membre
Dernière intervention
4 mai 2008

12 févr. 2007 à 13:42
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ducker88
Messages postés
277
Date d'inscription
lundi 9 février 2004
Statut
Membre
Dernière intervention
4 mai 2008

12 févr. 2007 à 13:59
Ca y est ca marche impec.
Merci a vous deux pour votre aide.

duck88
0
romagny13
Messages postés
687
Date d'inscription
lundi 10 janvier 2005
Statut
Membre
Dernière intervention
27 août 2014
3
13 févr. 2007 à 00:44
erf oui j'avais pas vu il a du oublier "public" devant class four
0
MorpionMx
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Membre
Dernière intervention
30 octobre 2008
57
13 févr. 2007 à 08:30
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# 
0
ducker88
Messages postés
277
Date d'inscription
lundi 9 février 2004
Statut
Membre
Dernière intervention
4 mai 2008

13 févr. 2007 à 09:27
Et c'est exactement ce que j'ai fait pour résoudre le problème

duck88
0
romagny13
Messages postés
687
Date d'inscription
lundi 10 janvier 2005
Statut
Membre
Dernière intervention
27 août 2014
3
13 févr. 2007 à 13:25
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
++
0
rollandSteph
Messages postés
1
Date d'inscription
mercredi 18 octobre 2017
Statut
Membre
Dernière intervention
18 octobre 2017

18 oct. 2017 à 23:34
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
0
Whismeril
Messages postés
17682
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
16 août 2022
613
18 oct. 2017 à 23:36
0