Flex:使用数据字段中包含的组合框值过滤数据网格

时间:2008-10-06 22:20:27

标签: regex flex datagrid combobox filter

我在一个带有多个条目的组合框中有一个过滤器。我没有使用完全匹配过滤数据网格,而是采用所选值,仅显示数据字段中包含所选值的记录。 例如:用户选择“New”值,datagrid显示记录内容​​为“New User”,“New Person”,“This one is New”等的记录。 我认为我需要使用RegExp,但我不知道如何让它工作。 提前致谢, S ...

2 个答案:

答案 0 :(得分:4)

这样的事情应该有效:

 public function filter(item:Object):Boolean{
        var result:Boolean=false;
        if (item.name.toUpperCase().indexOf(cbo.selectedLabel.toUpperCase()) >= 0)
             result=true;
        return result;
 }

此过滤器函数将搜索使用组合框当前选定标签传入的对象的名称属性(或任何要过滤的内容),如果找到该值,则返回true。因此,如果它在字符串中的任何位置找到单词“New”,它将显示在datagrid中。 IE:“新用户”,“新用户”将在过滤后显示。

希望这就是你要找的东西。

答案 1 :(得分:3)

您可以修改此选项以生成下拉过滤功能。 目前文本框过滤正在运行。所以我在这里发帖。

声明2个字符串变量 tempString和tempString_Name 然后......

使用以下2个功能

 private function filterByTerritory(item:Object):Boolean{
        tempString = item.name;
        tempString_Name = item.territory;
        if( (tempString.indexOf(sampleFilter.text,0) != -1) && 
                      (tempString_Name.indexOf(terrFilterTxt.text,0) != -1)){
            return true;
        }
        else{
            return false;
        }
     } 
     private function doFilter():void{
        if( (sampleFilter.text.length == 0) && 
                (terrFilterTxt.text.length == 0)) {
            myData.filterFunction == null;
        }
        else{
            myData.filterFunction = filterByTerritory;
        }
        myData.refresh();
     }

通过这两个文本框接受数据

<mx:TextInput id="sampleFilter" change="doFilter()"/>
  <mx:TextInput id="terrFilterTxt" change="doFilter()"/>

nutshell:在一些你希望过滤的事件上调用doFilter。

很快我将基于组合框过滤数据网格。 然后再见。我很快就会成为会员:)