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);
}
