PDA

View Full Version : Filtering a tree


Tuvix
04-14-2008, 08:12 AM
I'm having some problems filtering a tree in flex 3.0. The tree's dataprovider is an XmlListCollection. I've created a filterfunction which filters the data based on user input in a text field. My problem is that it's only run on the first level of my tree and not any of the childnodes.

Here is the code I use:

private function filterFunc(item:Object):Boolean {
var xmlData:XML = XML(item);
var searhReg:RegExp = new RegExp("^" + searchText.text, "i");
var searchIndex:int = item.@label.search(searhReg);
return searchIndex > -1;
}

And this is my Tree and XmlListCollection:
<mx:XML id="xmlMenu" source="menu.xml"/>
<mx:XMLListCollection id="xmlMenuList" source="{xmlMenu.*}" filterFunction="filterFunc" />

<mx:Tree id="treeLinks" fontSize="10" dataProvider="{xmlMenuList}" itemClick="klikItem(event)" labelField="@label" x="10" y="40" width="357" height="337">
</mx:Tree>

The xml I use looks like this:
<root>
<node label="node1">
<node label="subnode1"/>
...
<node label="subnode7"/>
</node>
...
<node label="node6">
<node label="subnode1"/>
...
<node label="subnode7"/>
</node>
</root>


Hope someone out there can help me with this.