Filtre sur l'affichage de données Xml dans un DataGrid [Résolu]

Signaler
Messages postés
8
Date d'inscription
mercredi 5 juillet 2006
Statut
Membre
Dernière intervention
13 juillet 2006
-
Messages postés
8
Date d'inscription
mercredi 5 juillet 2006
Statut
Membre
Dernière intervention
13 juillet 2006
-
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

Messages postés
8
Date d'inscription
mercredi 5 juillet 2006
Statut
Membre
Dernière intervention
13 juillet 2006

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 ?)
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
49
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
Messages postés
8
Date d'inscription
mercredi 5 juillet 2006
Statut
Membre
Dernière intervention
13 juillet 2006

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'