1 pièce(s) jointe(s)
Filtrage de niveau 2 dans Advanced Data grid
Bonjour,
Je souhaiterai filtrer mes données qui sont du type
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
<mx:ArrayCollection id="arrColl">
<mx:source>
<mx:Object label="One" value="100" subList="{toto}" />
<mx:Object label="two" value="75" subList="{toto2}" />
</mx:source>
</mx:ArrayCollection>
<mx:ArrayCollection id="toto">
<mx:Object label="Three" value="80" />
<mx:Object label="Four" value="200" />
</mx:ArrayCollection>
<mx:ArrayCollection id="toto2">
<mx:Object label="Three11233" value="980" />
<mx:Object label="Fouré525" value="140" />
</mx:ArrayCollection> |
J'ai donc repris un tuto qui permet de filtrer grace à un slider.
Mon composant graphique :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| <mx:AdvancedDataGrid id="dataGrid"
verticalScrollPolicy="on">
<mx:dataProvider>
<mx:HierarchicalData>
<mx:childrenField>subList</mx:childrenField>
<mx:source>{arrColl}</mx:source>
</mx:HierarchicalData>
</mx:dataProvider>
<mx:groupedColumns>
<mx:AdvancedDataGridColumn id="labelID" dataField="label"/>
<mx:AdvancedDataGridColumn id="value" dataField="value" />
</mx:groupedColumns>
</mx:AdvancedDataGrid> |
Ma fonction d'init sur le creationComplete de l'appliflex :
Code:
1 2 3 4 5 6 7 8 9
| private function init():void {
if (checkBox.selected) {
for each (var item : Object in arrColl)
{
item.subList.filterFunction = sliderFilterFunc;
item.subList.refresh();
}
}
} |
Mon handler sur le change event :
Code:
1 2 3 4 5 6
| private function slider_change(evt:SliderEvent):void {
for each (var item : Object in arrColl)
{
item.subList.refresh();
}
} |
la fonction de filtrage :
Code:
1 2 3 4 5 6 7 8 9 10
| private function sliderFilterFunc(item:Object):Boolean {
var minSlider:uint = slider.values[0];
var maxSlider:uint = slider.values[1];
if ((item.value >= minSlider) &&
(item.value <= maxSlider)) {
return true;
} else {
return false;
}
} |
En gros, ça m'affiche soit tous les éléments de niveau 2 de l'arbre soit aucun....
ce que je voudrais c'est que ça ne m'affiche les éléments de niveau 2 correspondant au filtre.
(j'ai attaché mon mxml...pour l'exemple)