如何使用三个复选框过滤flex datagrid。

时间:2011-02-28 10:54:40

标签: flex3

我是初学者。

我需要你的帮助。任何人都可以帮助我。

我的要求: Flex Datagrid应基于3个复选框进行过滤。(可以使用多种组合检查复选框)。

我的代码:

复选框:

数据提供者:

                                                                                                                                                                                                                                                            

MXML代码:

当我检查3个复选框的不同组合时,我必须过滤数据网格。 复选框值来自arraycollection的Staus列。 当我选中“已完成”复选框和“保留”复选框时,数据网格应仅显示状态为“已完成”的记录。 “等候接听”。 同样适用于c

的所有组合

请问有人能给出简单的解决方案吗?

谢谢, Anand.k

1 个答案:

答案 0 :(得分:0)

使用ArrayCollection作为dataProvider并为其filterFunction属性指定过滤函数:

var provider:ArrayCollection;

在实例化数组的部分,给它一个filterFunction:

provider.filterFunction = myFilteringFunction;

使用filterFunction的代码如下:

private function myFilteringFunction(item:ObjectTypeInYourArray) : Boolean {

        var show:Boolean;
        if(item.completed == checkBox1.checked && 
           item.onHold == checkBox2.checked){
                show = true;
        }

        return show;   
}

这是一个带有两个复选框的示例。分配给对象的completed和onHold属性的值的类型可能不是布尔值,因此在将它们与复选框的状态进行比较之前,您必须以某种方式对它们进行转换,但我认为您可以理解。

基本上,传递给arraycollection的filterFunction将应用于内部的每个项目,并根据您内部的代码返回true或false(例如,检查对象是否具有其属性的正确值)。显示值true

在复选框的更改事件中,刷新dataProvider:

provider.refresh();

希望有所帮助