【发布时间】:2018-08-14 08:58:18
【问题描述】:
我有一个具有 arrayCollection 的 MXList 框,我还有另一个 textarea 框。
我的要求是:当用户在文本区域输入所需的文本时,我需要从 List 中获取并显示匹配的记录,例如:
___________
|____Ka___| Text area
__________
|Kanrna |List Box : ArrayCollection
|Kam |
|Kao |
|kaddsd |So it looks something like this
|_________|
我尝试了各种方法:
<mx:List id="availableProfileList"
dataProvider="{campaignProxy.campaignWizardVo.currentProfiles}""/>
<mx:TextArea id="textSearch" textInput="applyFilter()"/>
protected function applyFilter():void{
campaignProxy.campaignWizardVo.currentProfiles.filterFunction = matchingFunction(campaignProxy.campaignWizardVo.currentProfiles, textSearch.text);
//Alert.show(textSearch.text)
//availableProfileList.findString(textSearch.text);
//availableProfileList.setFocus();
}
public function matchingFunction(availableProfileList:List, text:String):Vector.<int> {
var results:Vector.<int> = new Vector.<int>;
var item:String;
var entered:String = text.toLowerCase();
var itemIdx:int;
Alert.show("before for");
for(var idx:int = 0; idx < availableProfileList.dataProvider.length; idx++) {
item = availableProfileList.dataProvider.getItemAt(idx) as String;
item = item.toLowerCase();
itemIdx = item.indexOf(entered);
if(item.indexOf(entered) > -1) {
results.push(idx);
}
}
return results;
}
检查这些问题后:
combobox which filters dataprovider based on user input 和:
Flex - Search/Filter DataGrid by Text Input
我仍然不明白如何使它工作。
【问题讨论】:
-
为什么使用 filterFunction 的奇怪方式(无论如何你都在用错误的方式做)?您可以直接从 applyFilter 更改 dataProvider。
-
我尝试将该逻辑放在应用过滤器中,但我仍然没有得到它。如果有任何提示,对我实施会有帮助
-
如果这是一个桌面应用程序,那么 Flextras 的一个很棒的 AutoCompleteComboBox 组件就是这样做的:flextras.com/?event=ProductHome&productID=19
-
请问,您是如何使用 Flex 的?我自己在一个我们已经运行了 8 年的大型项目中使用它,但我想知道人们是否还在新的应用程序上使用它
标签: javascript java actionscript-3 apache-flex actionscript