如何在flex 3上的列表控件上动态设置selectedIndices?
我在转发器控件中使用列表。我有一个选项多选列表。当我选择多个选项时,我可以选择索引作为数组并存储在数据库中。同时在选定索引属性的列表控件中列出所选值时,它将无法正确设置。在这里,我已经给出了我的代码。
<mx:VBox y="30" x="1" id="vboxState">
<mx:Repeater id="rptrRadioState" dataProvider="{rptrArr}">
<mx:HBox>
<mx:List id="cmbstateradio" selectedIndices="{new Array(1,3)}" dataProvider="{listarr}" allowMultipleSelection="true" change="(event.currentTarget.getRepeaterItem().selectedval = cmbstateradio[event.target.repeaterIndices].selectedIndices)"/>
</mx:HBox>
</mx:Repeater>
</mx:VBox>
工作正常。但如果我以下面提到的方式尝试,那就不行了。
[Bindable]
public var arr:Array = new Array(1,3);
[Bindable]
public var rptrArr:ArrayCollection = new ArrayCollection([{label:"TestA",data:0,selectedval:new Array(1,3)},{label:"TestB",data:1,selectedval:arr},{label:"TestC",data:2,selectedval:arr}]);
<mx:VBox y="30" x="1" id="vboxState">
<mx:Repeater id="rptrRadioState" dataProvider="{rptrArr}">
<mx:HBox>
<mx:List id="cmbstateradio" selectedIndices="{new Array(rptrRadioState.currentItem.selectedval)}" dataProvider="{listarr}" allowMultipleSelection="true" change="(event.currentTarget.getRepeaterItem().selectedval = cmbstateradio[event.target.repeaterIndices].selectedIndices)"/>
</mx:HBox>
</mx:Repeater>
</mx:VBox>
答案 0 :(得分:0)
问题可能在这部分代码中:
"{new Array(rptrRadioState.currentItem.selectedval)}"
正如我所见,你创建了数组数组。尝试从语句中删除新的Array()。然后看下一个:
"{rptrRadioState.currentItem.selectedval}"
此外,您需要为selectedIndices
使用不同的数组。例如:
[Bindable]
public var rptrArr:ArrayCollection = new ArrayCollection([
{label: "TestA", data: 0, selectedval: [1, 3]},
{label: "TestB", data: 1, selectedval: [1, 3]},
{label: "TestC", data: 2, selectedval: [1, 3]}
]);
P.S。不幸的是,我无法解释为什么它不适用于所有列表'selectedIndices
的一个数组实例。也许别人知道答案。
答案 1 :(得分:0)
您在不同的元素中使用相同的数组arr。如果你真的需要这种行为,最好尝试克隆数组arr,而不是将其分配给许多组件。尝试不使用相同的阵列arr我认为这是问题所在。 flex 3上的某些元素不得在不同的可视组件中共享。我更喜欢在重复事件中为重复的组件分配属性,而不是在线进行。