首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在flex中使用comboBox过滤comboBox

在flex中使用comboBox过滤comboBox
EN

Stack Overflow用户
提问于 2009-10-28 11:11:54
回答 1查看 2.8K关注 0票数 1

如何根据组合框中的值筛选数据集?有人能给我举几个很好的例子吗?

在我的应用程序中,我已经根据用户输入的文本过滤了一个数据集。我将检查输入的字符串是否与数据集的列条目匹配,如果找到匹配项,则调用数据提供程序上的filterFunction。所有这些我只是在一个教程的帮助下完成的,因为我在学习flex,就像我做我的项目一样。

这就是密码:

代码语言:javascript
复制
<mx:FormItem direction="horizontal">
    <mx:ComboBox id="searchCriteria1" dataProvider="{criteriaDP1}" change="searchFunction()"/>
    <mx:TextInput id="search" change="searchFunction()"/> 
    <mx:Button label="Clear Search" click="clear()" /> 
</mx:FormItem> 

private function searchFunction():void{
defectList.filterFunction = filterItems;
defectList.refresh();
}

private function filterItems(item:Object):Boolean
{
var isMatch:Boolean = false         

     if(searchCriteria1.selectedItem.label == "Defect Id")
{ 
    if(item.defId.toString().search(search.text.toString()) != -1)
    {
        isMatch = true
    } 
}
else if(searchCriteria1.selectedItem.label == "Review Id")
{
    if(item.revId.toString().search(search.text.toString()) != -1)
    {
        isMatch = true
    } 
}
     return isMatch;  

}

这里,defectList是数据网格的数据提供者,revId、defId是数据网格的列。

现在我如何过滤,与组合框。我有一个名为“优先级”的组合框,其值为“高”、“中”、“低”、“全部”。如果选择“全部”,则不进行筛选。如果我选择“高”,那么只有那些列值为“高”的字段才会出现。

编辑--我甚至尝试过这样做:

代码语言:javascript
复制
 if(searchCriteria2.selectedItem.label=="Priority")
 {
      if (item.revType.toLowerCase().search(searchCriteria.selectedLabel.toLowerCase()) != -1)
 {
              Alert("yes");
    isMatch=true
 }
 }

searchCriteria是comboBox,在这里我有“所有”,“高”.我有两行值为“高”的行,只有两次得到警报“是”。但是,在数据网格中,显示了所有四行。

EN

回答 1

Stack Overflow用户

发布于 2009-10-30 15:14:37

您似乎在revType列上搜索,而不是在优先级列上搜索。

也许有必要找到一种方法来减少应用程序中重复代码的数量,以帮助避免这样的bug。例如,字段列表可能如下所示:

代码语言:javascript
复制
[Bindable]
var criteriaDP1:ArrayCollection = new ArrayCollection([{label:"Review ID", value:"RevID"},
                                                       {label:"Defect Id", value:"DefID"}]); 

这样设置它将允许您使用value字段作为dataProvider上的索引,如下所示:

代码语言:javascript
复制
public function search_clickHandler():void
{
    defectList.filterFunction = function(item:Object):Boolean
    {
        var gridValue:String = item[searchCriteria.selectedItem.value].toString().toLowerCase();
        var searchValue:String = search.text.toLowerCase(); 
        if(gridValue.search(searchValue) != -1)
        {
            return true;                        
        }
        return false;
    };
    defectList.refresh();
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1636604

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档