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

    上一篇: Actionscript 3 filter items out of combobox

    下一篇: Flex text item renderer multiple row