如何根据组合框中的值过滤数据网格?任何人都可以向我展示一些很好的例子吗?使用flex中的组合框过滤数据网格
在我的应用程序中,我已经根据用户输入的文本过滤了一个数据网格。我检查输入的字符串是否与数据网格的列条目相匹配,如果找到匹配,则调用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是数据提供器到数据网格,REVID,defId是数据网格的列。
现在我该如何过滤组合框。我有一个名为“优先级”的值为“高”,“中”,“低”,“全部”的组合框。如果我全选,则不进行过滤。如果我选择“高”,那么只应出现priprity列值为“高”的字段。
编辑 我甚至尝试这样的:
if(searchCriteria2.selectedItem.label=="Priority")
{
if (item.revType.toLowerCase().search(searchCriteria.selectedLabel.toLowerCase()) != -1)
{
Alert("yes");
isMatch=true
}
}
searchCriteria是ComboBox,在那里我有项目, “ALL”, “HIGH” ...... 我有两列值“高“,我得到的警报”是“只有两次.. 但在数据网格中显示所有四行。