使用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();
答案 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/