使用filterFunction基于多个参数进行过滤

时间:2011-09-19 10:32:55

标签: xml actionscript-3 flex flex4 filterfunction

我已经定义了一个XMLList,它从以下XML文件中获取数据:

    <modules>
        <module hab_id="1" module_id="1" default="true" access="true" />
        <module hab_id="1" module_id="2" default="true" access="true" />
        <module hab_id="1" module_id="2" default="true" access="false" />
        <module hab_id="1" module_id="2" default="false" access="true" />
        <module hab_id="2" module_id="3" default="true" access="true" />
        <module hab_id="2" module_id="3" default="false" access="true" />
    </modules>

现在在我的函数中,让我们点击一​​个我想同时按hab_id和module_id过滤的按钮并填充数据网格。

我在函数中尝试了这个:

    public function click_Handler(event:MouseEvent):void{
        myXMLList.filterFunction = myFilter;
        myXMLList.refresh();
        myDatagrid.dataProvider = myXMLList;
    }

    private function myFilter(xml:XML):Boolean{
                    return Number(xml.@hab_id) == 1;
                    return Number(xml.@module_id) == 2;
                }

但是过滤器只适用于hab_id。它不会被hab_id和module_id过滤。

对此有何帮助?

1 个答案:

答案 0 :(得分:0)

试试这个:

private function myFilter(xml:XML):Boolean{
   return Number(xml.@hab_id) == 1 && Number(xml.@module_id) == 2;
}

您的第一次返回将从函数返回,从不允许第二次返回执行。 将等式检查组合成单个返回值应该可以满足您的需求。