Datagridview et Liste <> [Résolu]

Signaler
Messages postés
277
Date d'inscription
lundi 9 février 2004
Statut
Membre
Dernière intervention
4 mai 2008
-
Messages postés
15934
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
15 mai 2021
-
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

Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
50
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# 
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
50
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# 
Messages postés
687
Date d'inscription
lundi 10 janvier 2005
Statut
Membre
Dernière intervention
27 août 2014
2
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 .

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

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
Messages postés
277
Date d'inscription
lundi 9 février 2004
Statut
Membre
Dernière intervention
4 mai 2008

Ca y est ca marche impec.
Merci a vous deux pour votre aide.

duck88
Messages postés
687
Date d'inscription
lundi 10 janvier 2005
Statut
Membre
Dernière intervention
27 août 2014
2
erf oui j'avais pas vu il a du oublier "public" devant class four
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
50
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# 
Messages postés
277
Date d'inscription
lundi 9 février 2004
Statut
Membre
Dernière intervention
4 mai 2008

Et c'est exactement ce que j'ai fait pour résoudre le problème

duck88
Messages postés
687
Date d'inscription
lundi 10 janvier 2005
Statut
Membre
Dernière intervention
27 août 2014
2
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
++
Messages postés
1
Date d'inscription
mercredi 18 octobre 2017
Statut
Membre
Dernière intervention
18 octobre 2017

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
Messages postés
15934
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
15 mai 2021
545