【发布时间】:2010-07-18 02:19:45
【问题描述】:
如何根据组合框中的值过滤数据网格?谁能给我一些很好的例子吗?
在我的应用程序中,我已经根据用户输入的文本过滤了一个数据网格。我检查输入的字符串是否与数据网格的列条目匹配,如果找到匹配项,则调用 dataprovider 上的 filterFunction。所有这些都是我在教程的帮助下完成的,因为我在学习 flex 时就像在做我的项目一样。
这是代码:
<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是Data Grid的dataprovider,revId,defId是data grid的列。
现在我如何使用组合框进行过滤。我有一个名为“优先级”的组合框,其值为“高”、“中”、“低”、“全部”。如果我全选,则不进行过滤。如果我选择“高”,则只会出现那些优先列值为“高”的字段。
编辑 我什至试过这样:
if(searchCriteria2.selectedItem.label=="Priority")
{
if (item.revType.toLowerCase().search(searchCriteria.selectedLabel.toLowerCase()) != -1)
{
Alert("yes");
isMatch=true
}
}
searchCriteria 是组合框,其中我有项目,“ALL”,“HIGH”... 我有两行值“高”,我只收到两次警报“是”.. 但在数据网格中,所有四行都显示出来了。
【问题讨论】:
标签: apache-flex combobox filtering