0

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

4

2 回答 2

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”,它将显示在数据网格中。IE:“新用户”、“新用户”都将在过滤后显示。

希望这是您正在寻找的。

于 2008-10-06T23:14:11.973 回答
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()"/>

简而言之:在您希望进行过滤的某个事件上调用 doFilter。

很快我将发布基于组合框过滤数据网格。到时候再见。我很快就会成为会员:)

于 2010-01-26T15:23:35.030 回答