Filtre sur l'affichage de données Xml dans un DataGrid

Résolu
cfeltz Messages postés 8 Date d'inscription mercredi 5 juillet 2006 Statut Membre Dernière intervention 13 juillet 2006 - 10 juil. 2006 à 14:16
cfeltz Messages postés 8 Date d'inscription mercredi 5 juillet 2006 Statut Membre Dernière intervention 13 juillet 2006 - 11 juil. 2006 à 12:16
Bonjour,
étant débutant en C# j'ai du mal a afficher ce que je veux dans mon DataGrid (il est bindée avec un document Xml)

Mon document Xml représente un ensemble de tables (une table Project, une table Module et une table de relation entre les deux) :
<

Root>
   <Project name= "Projet01">
      <Module name="Module1-01">
         <Attributs .../>
      </Module>
   </Project>

   <Project name="Projet02">
      <Module name="Module2-01">
         <Attributs .../>
      </Module>

   </Project>

</Root>

Voilà maintenant le code qui me permet d'afficher l'ensemble des modules dans mon DataGrid

dataSet1
. ReadXml (sPathXml
);
//Initialisation du datagrid
dataGrid1
.TableStyles
.Clear();
dataGrid1
.DataSource
= dataSet1
.Tables
["Module"];
//Ajout de la colonne du nom du projet
DataGridTableStyle DataTS
= new DataGridTableStyle ();
DataTS
.MappingName
= dataSet1
.Tables
["Module"].ToString();
DataGridTextBoxColumn DataCol
= new DataGridTextBoxColumn ();
DataCol
.MappingName
= dataSet1
.Tables
["Module"].Columns
["name"].ToString();
DataCol
.HeaderText
= "Nom du module";
DataTS
.GridColumnStyles
.Add(DataCol
);
dataGrid1
.TableStyles
.Add(DataTS
);

Seulement voilà, moi je ne veux afficher que les <Modules> d'un donné ('Projet01' par exemple)...
Comment faire pour appliquer un filtre sur mon DataGrid ?

Merci d'avance.

3 réponses

cfeltz Messages postés 8 Date d'inscription mercredi 5 juillet 2006 Statut Membre Dernière intervention 13 juillet 2006
11 juil. 2006 à 11:40
J'ai finalement trouvé une solution à l'aide des DataView et du champ RowFilter. Mon filtre est écrit ainsi :
DViewModules

.RowFilter
"Parent.name'" + sCodeProject
+ "'";

Parent.name correspondant dans mon exemple à la table parent des Modules, donc la table des Projects... que du bonheur.

Bon.. je n'ai pas encore résolu tous mes problèmes avec ma DataGrid, mais je commence a comprendre le principe petit à petit... si vraiment je ne m'en sort pas j'appellerais à nouveau à l'aide ;)

Merci++

PS.: j'ai vaguement regarder ce qu'on peut mettre dans RowFilter... ya pas mal de chose, mais je n'ai pas compris comment marche le champ Child (comment fait-on pour définir la table fille s'il y en a plusieurs ?)
3
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
10 juil. 2006 à 22:02
Salut,
Je ne sais pas si ça pourra directement t'aider, mais ça te donnera en tout cas une bonne piste de départ :
http://www.csharpfr.com/infomsg_DATAGRIDVIEW-LIMITER-NOMBRE-LIGNES-AFFICHEES_767492.aspx

VC# forever
=13319
0
cfeltz Messages postés 8 Date d'inscription mercredi 5 juillet 2006 Statut Membre Dernière intervention 13 juillet 2006
11 juil. 2006 à 12:16
Pour info, voici le lien qui m'a permi de répondre à ma question :
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemdatadatacolumnclassexpressiontopic.asp

Cependant, je n'arrive pas à mettre un filtre sur un parent à plusieurs niveaux : Lorsque je suis sur la table je veux filtrer sur Module.name 'Module2-01' et sur Project.name 'Projet02'A priori la syntaxe devrait être : RowFilter "Parent(Projet).name 'projet02' and Parent.name = 'Module2-01'",
or il ne comprend pas la syntaxe Parent(Projet) et je ne comprend pas pourquoi
--> Cannot find the parent relation 'Projet'
0
Rejoignez-nous