如何在flex中过滤分层集合视图

时间:2013-09-06 21:22:39

标签: flex filtering

我有一个像这样的分层xml结构:

<employee name="AAA" group="1"..../>
    <employee name="BBB" group="1"...>
        <employee name="CCC" group="1".../>
     </employee>  
    <employee name="DDD" group="0"... />
    <employee name="EEE" group="0"... />
</employee>

我加载XML,然后将数据传递给hierarchicalcollectionview:

var model:XML = .... (load the data)
var hData:HierarchicalData = new HierarchicalData(model);           
hCol = new HierarchicalCollectionView(hData);

然后,我将hCol用作自定义组件的dataProvider。该组件不支持dataDescriptor

我想只显示属性group =“1”的项目。 (本例中为AAA,BBB和CCC)

我该怎么办?我测试了filterFunction属性,但它只过滤了根节点(我认为) 我必须按该属性

过滤所有XML项目

提前致谢

的Cristian

1 个答案:

答案 0 :(得分:0)

我使用它来过滤我的XML树,除了我只显示与我正在运行的搜索匹配的最终节点。你可以修改它以返回带有子节点的节点,但它可以让你继续而不是HiearchicalCollection

private function filterXML(itemXML:XML, mainXML:XML, text:String) : XML {
            if(itemXML.hasComplexContent()) {
                for each(var childXML : XML in itemXML.children()) {
                    filterXML(childXML, mainXML, text);
                }
            } else {
                var regex :RegExp = new RegExp(text, "gi");
                if(itemXML.@group.toXMLString().search(regex)!=-1){
                    mainXML.appendChild(itemXML);
                }
            }
            return mainXML;
        }