Actionscript 3从组合框中过滤项目
所以我有一个组合框应该如下工作:
所以我创建了一个组合框,如下所示:
<s:ComboBox
id="cbox"
labelFunction="labels"
dataProvider="{objects}"
change="addFilter()"
restrict="a-zA-Z0-9-,_"
width="100%"
maxChars="32"
prompt="add filter"
/>
我的问题源于调用objects.refresh()
,因为它在dataGroup.removeEventListener(FlexEvent.UPDATE_COMPLETE, updateCompleteListenerA);
行中的list.as
文件(AS库)中失败dataGroup.removeEventListener(FlexEvent.UPDATE_COMPLETE, updateCompleteListenerA);
,其中dataGroup
为空。
objects
ArrayCollection
上的过滤器函数如下所示:
private function filterEcus(item:Object):Boolean {
for each (var i:Object in secondList) {
if (i.property == item.property) {
return true;
} else {
return false;
}
}
//should not reach this
return true;
}
我在更改处理程序结束时调用刷新。
您的问题有一个更简单的解决方案。 我只是测试它。 首先你需要声明你的组合框:
<s:ComboBox id="primaryCombobox" change="updateList(event)">
<s:ArrayList>
<fx:Object label="One"/>
<fx:Object label="Two"/>
<fx:Object label="Three"/>
<fx:Object label="Four"/>
</s:ArrayList>
</s:ComboBox>
<s:ComboBox id="secondaryCombobox">
<s:ArrayList>
<!-- You need to declare an empty data provider. -->
</s:ArrayList>
</s:ComboBox>
然后你在改变处理器上使用这个函数:
private function updateList(event:IndexChangeEvent):void
{
secondaryCombobox.dataProvider.addItem(primaryCombobox.selectedItem);
primaryCombobox.dataProvider.removeItemAt(primaryCombobox.selectedIndex);
}
链接地址: http://www.djcxy.com/p/34587.html