Xml, Xsd et affichage dans un DataGrid

Signaler
Messages postés
23
Date d'inscription
vendredi 13 janvier 2006
Statut
Membre
Dernière intervention
4 mars 2006
-
Messages postés
37
Date d'inscription
mardi 27 juillet 2004
Statut
Membre
Dernière intervention
4 mai 2006
-
Bonjour,
N'ayant jamais utilisé de DataSet, DataGrid & co je suis un peu perdu (en fait j'ai installé Visual Studio depuis un peu plus d'une semaine...)

Contexte :
J'ai une base Xml dans laquelle je stoque les textes à afficher dans mon application dont voici la structure générale :
Fichier ConstLangues.Xml :
<?xml version="
1.0"
encoding="
utf-8"
?>
<Langues>
<Constante Name="
NomAppli"
Category="
Génériques"
>
<Francais>Gestionnaire de planning saisonnier
</Francais>
http://www.labo-dotnet.com/Articles/Csharp/Base%20de%20données%20XML%20avec%20dotNET/Shéma%20XSD%20%20structure%20de%20la%20base/1/166.aspx

Question :
Je me pose donc deux questions :
- comment créer un schéma Xsd associé à mon fichier Xml?
- est-ce que ma base Xml est bien adaptée à ce que je veux faire (sachant que je souhaite pouvoir trier l'affichage par 'Category'
Exemple d'affichage :
Category Name Francais Anglais
Action sur des Fiches CréationFiche Création d'une Fiche null

Merci d'avance++

4 réponses

Messages postés
37
Date d'inscription
mardi 27 juillet 2004
Statut
Membre
Dernière intervention
4 mai 2006

salut, je ne sais pas si tu as résolu ton problème vu q ça ton message date dy a un mois mais tant pis,

Je pense qu'il suffit de bien regarder sur le MSDN, en faisant une recherche une recherche sur la methode read.xml ou autrement voici un bout du code:

string path = "toncheminfichier.xml" ;
tondataset.readxml(path) ;
tondatagrid.datasource = tondataset ;

-tu n'as donc pas besoin de créer le schéma de ta base puisque la methode readxml se charge de lire directement ce schéma a partir de ton xml.

quant à moi, je voudai personaliser mon affichage à partir des données récupérées de mon fichier xml
par exemple, ne pas afficher tous les noeuds, ou rajouter une colonne total_commandes,etc...

je me pose également deux questions:

1/ dois-je forcément exporter mes données dans un sgbd pour pouvoir manipuler celles-ci?

2/ supposons que oui, quelle méthode dois je adapter svp?

R2R.
Messages postés
23
Date d'inscription
vendredi 13 janvier 2006
Statut
Membre
Dernière intervention
4 mars 2006

Bonjour,
En effet, je n'ai pas besoin de créer de schéma... heureusement paske je ne sais toujours pas de quoi il s'agit...
Tu trouveras une partie de réponse à tes question sur
http://www.csharpfr.com/codes/TRAVAIL-SUR-BASES-DONNEES-DATASETS-FICHIERS-XML_18428.aspx

J'en profite également pour donner le code qui m'a permit de résoudre mon problème, peut-être que ça te donnera des idées :

Document Xml :

<Langues>
<Constante Name="
AppliName"
Category="
G‚n‚riques"
ConstanteName="
AppliName"
>
<Francais>Nom de l'application
</Francais>
Application name

</Constante>
</Langues>

Code source :


DataGridTableStyle DgStyle;
DgStyle =
new
DataGridTableStyle();
DgStyle.AllowSorting =
true;



DataGridColumnStyle dgColStyle =
new
DataGridTextBoxColumn();
dgColStyle.HeaderText =
"Nom de la constante";

dgColStyle.MappingName =
"Name";
dgColStyle.Width = 150;
DgStyle.GridColumnStyles.Add(dgColStyle);
...
dgColStyle =
new
DataGridTextBoxColumn();
dgColStyle.HeaderText =
"Français";

dgColStyle.MappingName =
"Francais";
dgColStyle.Width = 200;
DgStyle.GridColumnStyles.Add(dgColStyle);
dgColStyle =
new
DataGridTextBoxColumn();
dgColStyle.HeaderText =
"Anglais";

dgColStyle.MappingName =
"Anglais";
DgStyle.GridColumnStyles.Add(dgColStyle);
dgColStyle.Width = 200;
dgColStyle =
null;

DgStyle.MappingName =
"Constante";

DataSetLangues.ReadXml(sPathDocumentXml);

DataView DV=DataSetLangues.Tables[
"Constante"].DefaultView;
DataGridLangues.DataSource = DV;
DataGridLangues.TableStyles.Clear();
DataGridLangues.TableStyles.Add(DgStyle);

Voilà, j'espère que tu trouveras réponse à ta solution...
d'ailleur je n'ai pas réussi a en faire de même lorsque le document Xml est plus complexe
Exemple :
Afficher trois colonnes (Identifiant, Titre et City de RentalCard) dans un DataGrid du document Xml suivant :


""
>
<RentalCard Identifiant=""
LocalIdentifiant=""
>
<Title></Title>

<Street></Street>
<City></City>
<PostalCode></PostalCode>


</RentalCard>

</UserName>

En effet, d'une part il me met un symbole "+" me permettant d'ouvrir les sous-noeud, et d'autre par je n'arrive pas à afficher City (j'ai essayer de mettre dans Mapping "City" et "Address/City", mais ca ne marche pas)... si quelqu'un a une solution...
Messages postés
37
Date d'inscription
mardi 27 juillet 2004
Statut
Membre
Dernière intervention
4 mai 2006

idée pour te faciliter la tache au lieu de saisir tout ce code à la main, et resoudre ta dernière question.

mets toi en mode design pour afficher la fenetre de propriété de ton datagrid, clique sur la prop TableStyles
>Ajouter , prop MappingName = le nom de ton premier noeud correspondra à ta 1ere table. etc pour les noeuds fils suivant...
>propriétéGridColumnStyles
Ajouter , ajoute les col que tu veux afficher et leur propriété

RRR
Messages postés
37
Date d'inscription
mardi 27 juillet 2004
Statut
Membre
Dernière intervention
4 mai 2006

merci pour le lien, qui constitue un briefing très utile.

RRR