Xml, Xsd et affichage dans un DataGrid

cs_cfz Messages postés 23 Date d'inscription vendredi 13 janvier 2006 Statut Membre Dernière intervention 4 mars 2006 - 1 févr. 2006 à 15:51
ratsimisampy Messages postés 37 Date d'inscription mardi 27 juillet 2004 Statut Membre Dernière intervention 4 mai 2006 - 9 mars 2006 à 09:25
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

ratsimisampy Messages postés 37 Date d'inscription mardi 27 juillet 2004 Statut Membre Dernière intervention 4 mai 2006
28 févr. 2006 à 17:40
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.
0
cs_cfz Messages postés 23 Date d'inscription vendredi 13 janvier 2006 Statut Membre Dernière intervention 4 mars 2006
8 mars 2006 à 14:43
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...
0
ratsimisampy Messages postés 37 Date d'inscription mardi 27 juillet 2004 Statut Membre Dernière intervention 4 mai 2006
9 mars 2006 à 09:14
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
0
ratsimisampy Messages postés 37 Date d'inscription mardi 27 juillet 2004 Statut Membre Dernière intervention 4 mai 2006
9 mars 2006 à 09:25
merci pour le lien, qui constitue un briefing très utile.

RRR
0
Rejoignez-nous