Flex,使用ITreeDataDescriptor过滤树而无需重新加载并关闭所有节点

时间:2011-01-18 00:45:47

标签: flex tree filtering

使用flex 4并使用ITreeDataDescriptor实现过滤。 过滤按预期工作,如下面的代码片段

但是,我正在尝试创建一个按需类型的过滤器,用户可以在TextInput中键入search子句,并且当用户键入时,树节点将被动态过滤。

我的实现现在是用户点击搜索按钮,然后重新应用dataDescriptor然后重新加载数据。一个很大的问题是,在再次设置dataProvider之后整个树都会崩溃。

关于如何实现按需过滤器的任何建议?

var dataFilter:ServicePricingFilter = new MyFilter();
dataFilter.searchString = this.txtSearchKeyword.text;
this.treeService.dataDescriptor = new MyDataDescriptor(dataFilter);
this.treeService.dataProvider = getTreeData();

2 个答案:

答案 0 :(得分:0)

我认为你不应该每次都设置dataprovider,而是使用insted为ListCollectionView类提供的filterFunction属性(ArrayCollection,XMLListCollection,...)

答案 1 :(得分:0)

看了弗洛里安提到的帖子。 按需过滤通过使用ITreeDataDescriptor和filterFunction完成。 在搜索TextInput的keyup事件上,在树上调用invalidateList()函数。

查看以下帖子提供的源代码 http://www.davidarno.org/2009/04/01/how-to-filter-all-nodes-of-a-flex-tree-component/