Flex:使用包含在数据域中的组合框过滤数据网格
问题描述:
我在包含多个条目的组合框中有一个过滤器。我不想使用完全匹配来过滤数据网格,而是希望获取选定的值,并只显示数据字段中包含所选值的记录。 例如:用户选择“新建”的值,数据网格显示记录内容可以是“新用户”,“新人”,“这是新的”等记录。 我认为我需要使用RegExp,但我无法解决如何使其正常工作。 由于提前, 小号...Flex:使用包含在数据域中的组合框过滤数据网格
答
像这样的东西应该工作:
public function filter(item:Object):Boolean{
var result:Boolean=false;
if (item.name.toUpperCase().indexOf(cbo.selectedLabel.toUpperCase()) >= 0)
result=true;
return result;
}
这个过滤器功能将搜索name属性(或者任何你想过滤的)与传递的对象组合框当前选定的标签,如果它找到该值,它将返回true。因此,如果它在字符串中的任何位置找到单词“New”,它将显示在数据网格中。 IE:“新人”,“新用户”都会出现一次过滤。
希望这是你在找什么。
答
您可以修改它以产生下拉筛选功能。 当前文本框过滤正在工作。所以我在这里发布。
声明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();
}
接受通这2个文本框数据
<mx:TextInput id="sampleFilter" change="doFilter()"/>
<mx:TextInput id="terrFilterTxt" change="doFilter()"/>
简而言之:请致电doFilte关于你想过滤发生的事件。
我很快就会过滤基于组合框的数据网格。 直到再见。我将很快成为会员:)
这是friggin真棒,比我见过的任何东西都更好。为此欢呼,你救了我一个这样的麻烦,我觉得我欠你晚餐。 – D3vtr0n 2010-09-10 20:19:11