带 ItemRender 的 Flex 数据绑定列表 - 重新排序会重置复选框值

发布于 2024-07-24 21:51:43 字数 761 浏览 5 评论 0原文

我有一个与数组数据绑定的 Flex 列表。 我的问题是,当我使用内置的 DragMoveEnabled 重新排序列表时,这些值将重置为原始值。

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

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

I have a Flex List which is databound to a Array. My problem is that when I reorder the List using the built in dragMoveEnabled, the values are reset to the original values.

I assume I need to somehow do a two-way databinding but I am not sure how.

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

通知家属抬走 2024-07-31 21:51:43

也许你可以尝试:

selectedField = "IsDone"

Maybe you can try:

selectedField = "IsDone"
开始看清了 2024-07-31 21:51:43

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>

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

itemRenderer, by itself, only renders the data. Here's what I found works:

<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>

If you update a checkbox, you need to select another item before you can relocate the edited item in the list. Hope that helps!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文