2009-06-16 60 views
0

我有一個Flex列表,它是一個數組綁定到一個數組。我的問題是,當我使用內置的dragMoveEnabled重新排列列表時,值被重置爲原始值。與ItemRender的Flex數據綁定列表 - 重新排序復位複選框值

我想我需要以某種方式做雙向綁定,但我不知道怎麼樣。

<mx:List width="100%" top="20" id="uiItemList" dragMoveEnabled="true" bottom="0" 
      dragEnabled="true" dropEnabled="true" 
    dataProvider="{listArray}" > 
    <mx:itemRenderer> 
     <mx:Component> 
      <mx:HBox width="100%" height="25" > 
       <mx:CheckBox id="uiCheck" textAlign="center" selected="{data.IsDone}" mouseDown="event.stopImmediatePropagation();" /> 
      </mx:HBox> 
     </mx:Component> 
    </mx:itemRenderer> 
</mx:List> 

[Bindable] 
public var listArray : ArrayCollection = new ArrayCollection(); 

回答

0

的itemRenderer,其本身只是呈現數據。這是我發現的作品:

<mx:ArrayCollection id="listArray"> 
    <mx:Array> 
    <mx:Object label="Item One" checked="false" /> 
    <mx:Object label="Item Two" checked="true" /> 
    </mx:Array> 
</mx:ArrayCollection> 
<mx:List dataProvider="{listArray}" dragEnabled="true" dragMoveEnabled="true" dropEnabled="true" editable="true" rendererIsEditor="true" editorDataField="data"> 
    <mx:itemRenderer> 
    <mx:Component> 
     <mx:HBox xmlns:mx="http://www.adobe.com/2006/mxml"> 
     <mx:Script> 
      <![CDATA[ 
    private var _data:Object; 

    [Bindable] 
    override public function set data(value:Object):void { 
     _data = value; 
    } 

    override public function get data():Object { 
     return _data; 
    } 
      ]]> 
     </mx:Script> 
     <mx:CheckBox selected="{data.checked}" /> 
     <mx:Label text="{data.label}" />        
     </mx:HBox> 
    </mx:Component> 
    </mx:itemRenderer> 
</mx:List> 

如果更新複選框,則需要選擇另一個項目,然後才能在列表中重新定位編輯項目。希望有所幫助!