所以我有一个组合框应该按如下方式工作:
所以我创建了一个类似的组合框:
<s:ComboBox
id="cbox"
labelFunction="labels"
dataProvider="{objects}"
change="addFilter()"
restrict="a-zA-Z0-9\-,_"
width="100%"
maxChars="32"
prompt="add filter"
/>
我的问题源于调用objects.refresh()
,因为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;
}
我在更改处理程序的末尾调用了刷新。
答案 0 :(得分:0)
您的问题有一个更简单的解决方案。我刚试过它。 首先,您需要声明组合框:
<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);
}