OVH Cloud OVH Cloud

Formater Datagrid pour structure de table

5 réponses
Avatar
metalseb
Bonjour à tous

Existe t'il un moyen de formater un datagrid pour qu'il affiche la structure
d'une table (MySQL, SQL Server) etc ... C'est un composant que je maitrise
assez mal.

Pour l'instant, je fais ça avec un FillSchema sur un dataset et j'affiche
dans un listview.

--
Seb

5 réponses

Avatar
LEBRUN Thomas
Tu indiques au datagrad son datasource (par exemple ds.Table[0] où ds est un
dataset) et cela fonctionne.

J'avoue avoir du mal à saisir ta question.

A+

-------------------
LEBRUN Thomas
http://morpheus.developpez.com


"metalseb" wrote:

Bonjour à tous

Existe t'il un moyen de formater un datagrid pour qu'il affiche la structure
d'une table (MySQL, SQL Server) etc ... C'est un composant que je maitrise
assez mal.

Pour l'instant, je fais ça avec un FillSchema sur un dataset et j'affiche
dans un listview.

--
Seb





Avatar
Bismark Prods
Comme je comprends la question :

nom du champs : type du champs : paramètres (index, clé, etc)
etc pour chaque champs

...

"LEBRUN Thomas" <lebrun_thomas_at_hotmail.com> a écrit dans le message de
news:
Tu indiques au datagrad son datasource (par exemple ds.Table[0] où ds est


un
dataset) et cela fonctionne.

J'avoue avoir du mal à saisir ta question.

A+

-------------------
LEBRUN Thomas
http://morpheus.developpez.com


"metalseb" wrote:

> Bonjour à tous
>
> Existe t'il un moyen de formater un datagrid pour qu'il affiche la


structure
> d'une table (MySQL, SQL Server) etc ... C'est un composant que je


maitrise
> assez mal.
>
> Pour l'instant, je fais ça avec un FillSchema sur un dataset et


j'affiche
> dans un listview.
>
> --
> Seb
>
>
>


Avatar
LEBRUN Thomas
Ah oui, de cette facçon, je comprend mieux.....

Effectivement, aucun rapport avec ce que je t'ai dit...

Désolé.

-------------------
LEBRUN Thomas
http://morpheus.developpez.com


"Bismark Prods" wrote:

Comme je comprends la question :

nom du champs : type du champs : paramètres (index, clé, etc)
etc pour chaque champs

....

"LEBRUN Thomas" <lebrun_thomas_at_hotmail.com> a écrit dans le message de
news:
> Tu indiques au datagrad son datasource (par exemple ds.Table[0] où ds est
un
> dataset) et cela fonctionne.
>
> J'avoue avoir du mal à saisir ta question.
>
> A+
>
> -------------------
> LEBRUN Thomas
> http://morpheus.developpez.com
>
>
> "metalseb" wrote:
>
> > Bonjour à tous
> >
> > Existe t'il un moyen de formater un datagrid pour qu'il affiche la
structure
> > d'une table (MySQL, SQL Server) etc ... C'est un composant que je
maitrise
> > assez mal.
> >
> > Pour l'instant, je fais ça avec un FillSchema sur un dataset et
j'affiche
> > dans un listview.
> >
> > --
> > Seb
> >
> >
> >





Avatar
metalseb
Bismark Prods wrote:
nom du champs : type du champs : paramètres (index, clé, etc)
etc pour chaque champs



Oui c'est exactement ce que je veux faire.

Si je remplis mon datagrid avec
datagrid.SetDataBinding(ds,ds.Tables[0].ToString()), sachant que mon dataset
ds a été rempli avec un FillSchema, l'affichage du datagrid ne me donne que
les en-têtes de colonnes ce qui est logique puisqu'il n'y a pas de lignes de
données retournées par le FillSchema. Si je fait suivre un ds.Fill à la
suite, j'obtiens les données de la table et ce n'est pas ce que je cherche.
D'où ma question originale.

J'arrive bien à récupérer le schéma de la table en parcourant la collection
DataColumn. Si je reformule ma question autrement; Est-il possible de
générer à la volée les lignes d'un datagrid pour y injecter ce qu'il y a
dans les DataColumn ?

Dernière question : Y a t'il un moyen de récupérer le type *natif* d'une
colonne ? Par exemple, une colonne de type MySQL VARCHAR va voir son
DataColumn.DataType me renvoyer System.String et ça me gêne beaucoup.

Merci de votre aide à tous !

--
Seb
Avatar
metalseb
J'ai trouvé la façon de faire, je poste ici un bout de code pour que ça
puisse servir à d'autres développeurs qui se poseraient la même question :

DataSet ds=serveur.GetTableSchema(database,table);
DataTable dta=ds.Tables[0];
DataTable dt=new DataTable();
dt.Columns.Add("Nom",typeof(string));
dt.Columns.Add("Type",typeof(string));
dt.Columns.Add("Taille",typeof(int));
dt.Columns.Add("NULL",typeof(string));
dt.Columns.Add("Val par défaut",typeof(string));
foreach(DataColumn dc in dta.Columns)
{
DataRow dr;
dr=dt.NewRow();
dr[0]Ü.ColumnName;
dr[1]Ü.DataType.ToString();
dr[2]Ü.MaxLength;
dr[3]=(dc.AllowDBNull==true ? "NULL" : "");
dr[4]Ü.DefaultValue.ToString();
dt.Rows.Add(dr);
}
datagrid.DataSource=dt;
datagrid.SetDataBinding(dt,dt.TableName);

--
Seb