Actionscript 3 Actionscript 3从组合框中筛选项目

Actionscript 3 Actionscript 3从组合框中筛选项目,actionscript-3,combobox,mxml,Actionscript 3,Combobox,Mxml,因此,我有一个组合框,它的工作原理如下: 单击下拉列表 选择一个项目 项目被移动到另一个列表中 在第一个组合框下拉列表中再也找不到项 因此,我创建了一个组合框,如: <s:ComboBox id="cbox" labelFunction="labels" dataProvider="{objects}" change="addFilter()" restrict=

因此,我有一个组合框,它的工作原理如下:

  • 单击下拉列表
  • 选择一个项目
  • 项目被移动到另一个列表中
  • 在第一个组合框下拉列表中再也找不到项
  • 因此,我创建了一个组合框,如:

        <s:ComboBox
                id="cbox"
                labelFunction="labels"
                dataProvider="{objects}"
                change="addFilter()"
                restrict="a-zA-Z0-9\-,_"
                width="100%"
                maxChars="32"
                prompt="add filter"
        />
    

    我在更改处理程序的末尾调用刷新。

    有一个更简单的解决方案。我刚测试过。 首先,您需要声明您的组合框:

    <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>
    

    你的问题有一个更简单的解决方案。我刚测试过。 首先,您需要声明您的组合框:

    <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>
    

    我也有同样的问题,删除项目不会更新组合框,因此我必须调用
    .refresh()
    ,这会导致失败。请尝试在数据绑定时不使用数据提供程序。对我来说就是这样。稍后可以在更改事件处理程序中模拟数据绑定。myCombobox.dataProvider=someArrayList;有趣的是,我真的很想知道为什么我对数据的过滤会引起问题。我删除了绑定,但刷新时仍然失败。使用我的代码,您实际上不需要调用refresh(),因为所有更改都会立即应用。只要试着把这个例子复制粘贴到一个空白的项目中,就可以看到它的交互作用。对,但我的问题是因为没有应用更改,不得不调用refresh,然后它失败了。我在我的项目中尝试了您的解决方案,但该解决方案无法按预期工作。我遇到了相同的问题,删除项目不会更新组合框,因此我必须调用
    .refresh()
    ,该操作随后失败。请尝试在数据绑定时不使用数据提供程序。对我来说就是这样。稍后可以在更改事件处理程序中模拟数据绑定。myCombobox.dataProvider=someArrayList;有趣的是,我真的很想知道为什么我对数据的过滤会引起问题。我删除了绑定,但刷新时仍然失败。使用我的代码,您实际上不需要调用refresh(),因为所有更改都会立即应用。只要试着把这个例子复制粘贴到一个空白的项目中,就可以看到它的交互作用。对,但我的问题是因为没有应用更改,不得不调用refresh,然后它失败了。我在我的项目中尝试了您的解决方案,但它没有按预期工作。
    private function updateList(event:IndexChangeEvent):void
    {
        secondaryCombobox.dataProvider.addItem(primaryCombobox.selectedItem);
        primaryCombobox.dataProvider.removeItemAt(primaryCombobox.selectedIndex);
    }