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