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 19055 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 10 juin 2024 - 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 19055 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 10 juin 2024 657
18 oct. 2017 à 23:36
0
Rejoignez-nous