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.
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.