带有ItemRender的Flex数据绑定列表 - 重新排序重置CheckBox值

时间:2009-06-16 12:29:53

标签: flex flash actionscript-3 flex3

我有一个Flex List,它可以数据绑定到一个数组。我的问题是,当我使用内置的dragMoveEnabled重新排序List时,值将重置为原始值。

我假设我需要以某种方式进行双向数据绑定,但我不确定如何。

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

2 个答案:

答案 0 :(得分:0)

也许你可以试试:

selectedField = "IsDone"

答案 1 :(得分: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>

如果更新复选框,则需要先选择其他项目,然后才能重新定位列表中的已编辑项目。希望有所帮助!