Choix des colonnes à ajouter dans datagridview à partir d'un dataset [Résolu]

ericdu93 56 Messages postés dimanche 1 août 2004Date d'inscription 28 août 2008 Dernière intervention - 6 mars 2008 à 20:19 - Dernière réponse : ericdu93 56 Messages postés dimanche 1 août 2004Date d'inscription 28 août 2008 Dernière intervention
- 7 mars 2008 à 17:35
Bonjour,

je récupère les données d'un fichier excel à l'aide d'ado.net et que je stocke dans une table de mon dataset qu'on appelle "toto". J'aimerai afficher dans un datagridview seulement certaines colonnes de ma table " toto". Voilà ce que j'ai essayé de faire:

...
s = new DataSet();
ThisCommand.Fill(ds, "toto");
dataGridView1.Columns.Add(ds.Tables["toto"].Columns["Email"]);
dataGridView1.Columns.Add(ds.Tables["toto"].Columns["Civilité"]);

et j'obtiens l'erreur:
Erreur    1    La méthode surchargée correspondant le mieux à 'System.Windows.Forms.DataGridViewColumnCollection.Add(System.Windows.Forms.DataGridViewColumn)' possède des arguments non valides   

Bien sûre si je fais:
dataGridView1.DataSource = ds.Tables["toto"];
ca marche, pour vous montrer qu'il n'y a pas de souci jusqu'à la création du dataset.

Donc pouvez vous me donner un coup de main svp.
Merci d'avance.
Afficher la suite 

6 réponses

Répondre au sujet
Amelie_29 41 Messages postés jeudi 12 janvier 2006Date d'inscription 30 octobre 2008 Dernière intervention - 7 mars 2008 à 10:14
+3
Utile
Tu peux créer les colonnes de ton datagridview de cette façon :

DataGridViewTextBoxColumn

DTGV_Id_Colonne =
new
DataGridViewTextBoxColumn();
DTGV_Id_Colonne.DataPropertyName "CHAMP_DATASET";  // Lie la colonne du dataset à la colonne du datagridviewDTGV_Id_Colonne.HeaderText

"Nom_En_Tête_Colonne";DTGV_Id_Colonne.Name =

"Nom_Colonne";DTGV.Columns.Add(DTGV_Id_Colonne);

DTGV.AutoGenerateColumns =

false;

Ensuite tu bindes ton datagridview à ton dataset.
DTGV.datasource = dataset;
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de Amelie_29
Amelie_29 41 Messages postés jeudi 12 janvier 2006Date d'inscription 30 octobre 2008 Dernière intervention - 7 mars 2008 à 16:27
+3
Utile
Essaie peut-être ça :

DTGV.Datasource = ds;
DTGV.Datamember = "toto";
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de Amelie_29
ericdu93 56 Messages postés dimanche 1 août 2004Date d'inscription 28 août 2008 Dernière intervention - 7 mars 2008 à 15:54
0
Utile
Bonjour Amelie_29,

J'ai fais comme tu as dit:

                ds= new DataSet();
                ThisCommand.Fill(ds, "toto");
                DataGridViewTextBoxColumn DTGV_Id_Colonne = new DataGridViewTextBoxColumn();
                DTGV_Id_Colonne.DataPropertyName = "Email";  // Lie la colonne du dataset à la colonne du datagridview
                DTGV_Id_Colonne.HeaderText ="Email";
                DTGV_Id_Colonne.Name ="Email";
                dataGridView1.Columns.Add(DTGV_Id_Colonne);
                dataGridView1.AutoGenerateColumns = false;
                dataGridView1.DataSource = ds["toto"];

mais en affichant mon datagrid, j'ai qu'une colonne avec comme headerName "Email" sans toutes les enregistrements en dessous.

Aurais-tu une solution ?
Merci d'avance.
Commenter la réponse de ericdu93
ericdu93 56 Messages postés dimanche 1 août 2004Date d'inscription 28 août 2008 Dernière intervention - 7 mars 2008 à 15:58
0
Utile
Oops, j'ai fait une faute à la dernière instruction en oublier le "Tables", ce qui donne maintenant
dataGridView1.DataSource = ds.Tables["toto"];

Cette fois-ci, il apparaît que des cases blanches en dessous de ma colonne "Email"
Commenter la réponse de ericdu93
Amelie_29 41 Messages postés jeudi 12 janvier 2006Date d'inscription 30 octobre 2008 Dernière intervention - 7 mars 2008 à 16:24
0
Utile
Récupères-tu bien les emails dans le dataset ?
Commenter la réponse de Amelie_29
ericdu93 56 Messages postés dimanche 1 août 2004Date d'inscription 28 août 2008 Dernière intervention - 7 mars 2008 à 17:35
0
Utile
Merci, en testant ton dernier code, je me suis rendu compte que mon champs s'appellait "E-mail" avec un tiret et non "Email". Je mérite d'être fouetté je sais.

merci en tout cas.
Commenter la réponse de ericdu93

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.