2014-09-30 15 views
0

如何在Flex 3上的列表控件上动态设置selectedIndices?如何在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

问题可能出在这部分代码:

"{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的一个数组实例。也许别人知道这个答案。

+0

我试了。它也没有work.i不能得到解决方案... – venkat 2014-10-06 05:52:16

+0

我更新了我的答案。 – Crabar 2014-10-06 07:08:30

+0

谢谢crabar.But它也没有工作。这样只会选择第一个索引。这是零指数。 – venkat 2014-10-06 10:21:10

0

您在不同的元素中使用相同的数组arr。如果你真的需要这种行为,最好试着克隆数组arr,而不是将它分配给许多组件。尝试不使用相同的阵列ARR我认为这是问题。 flex 3上的某些元素不能在不同的可视组件中共享。我更喜欢在重复事件中为重复的组件分配属性,而不是在线进行。

相关问题