如何根據組合框中的值過濾數據網格?任何人都可以向我展示一些很好的例子嗎?使用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」 ...... 我有兩列值「高「,我得到的警報」是「只有兩次.. 但在數據網格中顯示所有四行。