Gérer du xml à travers un datagrid [Résolu]

Signaler
Messages postés
10
Date d'inscription
mardi 7 octobre 2003
Statut
Membre
Dernière intervention
5 avril 2006
-
Messages postés
10
Date d'inscription
mardi 7 octobre 2003
Statut
Membre
Dernière intervention
5 avril 2006
-
Bonjour,
j'ai un pb avec un fichier xml que j'aimerais gérer au travers d'une interface, au lieu d'éditer le fichier et le compléter dans un fichier texte.

Le pb que j'ai c'est que mon fichier xml ets assez important et comporte des attributs qui différent selon les éléments. Au début, je me suis dit que j'allais afficher tous les attributs de chaque élément dans un datagrid, mais là c'est pas possible parce que j'ai bcp d'attributs différents..
Alors, je lie simplement un datagrid au dataset, mais je me retrouve avec la liste de tous les éléments, avec le signe + pour les développer, et bien sur quand je les développe, je me retrouve avec toute une liste d'attributs, mais ceux qui ne se trouvent pas dans l'élément concerné. Ca fait vraiment pas trés propre. Si quelqu'un a déja rencontré ce genre de pb, ou si vs avez une petite idée, merci par avance de toute suggestion.

4 réponses

Messages postés
346
Date d'inscription
lundi 8 septembre 2003
Statut
Membre
Dernière intervention
3 septembre 2007
3
J'ai relu ton message,
Si tu as des + dans ta datagrid, c'est que ton dataset est divisé en plusieurs datatables qui sont remplis avec ton xml.
Sauf dans le cas ou tu n'as pas défini de datamember à ta datagrid, la c normal.

Explication : un dataset est un objet qui contient une ou plusieurs tables qui contiennent les données de ton xml.

Tu lies ta datagrid à ton dataset. C tres bien, mais la datagrid ne sait pas quelles datatables affichées donc, elle affiche des + pour donner le choix à l'utilisateur.

Il faut dire quelle datatable tu lie à la datagrid pour supprimer les plus( sauf dans le cas de liaison entre les élémenents, mais la , ca devient compliquer à expliquer).

Bref, une fois que tu connais le nom des tables qui sont contenues dans ton dataset, tu peux personnaliser ta datagrid pour ln'afficher que les colonnes que tu veux.

Exemple de code :
le using qu'il doit falloir mettre est system.data
//déclare un style de grille
DataGridTableStyle ts1 = new DataGridTableStyle();
//quelle table personnaliser l'affichage
ts1.MappingName = Mydataset.MyTable.toString();

//donnée d'affichage de la grille
ts1.HeaderBackColor=SystemColors.ControlLightLight;
// Add 2 cols with textbox column style
DataGridTextBoxColumn TextCol = new DataGridTextBoxColumn();
//Indique le nom e la colonne à personnaliser
TextCol.MappingName = Mydataset.myTable.PremierColonne.toString();
TextCol.HeaderText = "";
TextCol.Width = 25;
TextCol.NullText ="";
ts1.GridColumnStyles.Add(TextCol);

//J'ajoute le style à ma datagrid
dataGrid1.TableStyles.Add(ts1);

L'ordre dans lequel tu vas déclarer les personnalisation de tes colonnes comptes car c l'ordre d'affichage dans la grille

apres je ne connais pas la structure de ton xml, donc, je ne peux pas t'en dire plus , bon courage
Messages postés
346
Date d'inscription
lundi 8 septembre 2003
Statut
Membre
Dernière intervention
3 septembre 2007
3
Pourquoi ne pas lier ta datagrid a une seule datatable

Est ce que que le schéma de ton dataset est créé déjà. Tu le créé , tu charges ton doc xml et tu affiches ce que tu veux.

Tu peux personnalisé ton datagrid aussi pour n'afficher que les colonne ou les databble que tu souhaites ( datagridstyle)

bref ,n beaucoup d'options, mais tu sera peut etre amener à modifier la structure de ton doc xml
Messages postés
10
Date d'inscription
mardi 7 octobre 2003
Statut
Membre
Dernière intervention
5 avril 2006

Merci,
je ne comprends pas ce que tu veux dire par le dataset crée ? En fait j'ai crée un dataset dans lequel j'ai chargé le fichier xml : myDataSet.load(ficxml). Ensuite j'ai attaché un datagrid pour pourvoir modofier le nom des colonnes, mieux organiser la table..
Tu as raison, je crois qu'effectivement, je vais être amené à modifier la structure du fichier, peut etre le diviser en 2 fichiers, parce qu'il y a trop d'attributs, ce qui me ferait trop de colonnes à afficher.
Messages postés
10
Date d'inscription
mardi 7 octobre 2003
Statut
Membre
Dernière intervention
5 avril 2006

Merci bcp d'avoir passé de ton temps à me répondre. Je te revaudrai ça j'espère ;)