繁体   English   中英

从itemRenderer更新arraycollection

[英]Update arraycollection from itemRenderer

我有一个如下程序:

  [Bindable]
  private var myDP:Array = [
       {label: "1", selected: true},
       {label: "2", selected: false}
   ];

  </mx:Script>

<mx:DataGrid dataProvider="{myDP}">
    <mx:columns>
        <mx:DataGridColumn dataField="label" headerText="Label" />
        <mx:DataGridColumn dataField="selected" itemRenderer="mx.controls.CheckBox" />
    </mx:columns>
</mx:DataGrid>

它工作正常,但是当复选框更改时,该值不会在arraylist上更新。 当此项目渲染器上的复选框更改时,是否有办法触发某些功能?

在复选框更改事件上,您可以调度事件,如下所示:

<s:CheckBox change="onChange()" />

    private function onChange():void
    {
         var testEvent:CustomEvent = new CustomEvent(CustomEvent.SELECT_ITEM_EVENT,true);
         CustomEvent.selectedItem = data;
         dispatchEvent(selectEvent);
    }

并在主页面中获取/添加EventListener该事件:

addEventListener(CustomEvent.SELECT_ITEM_EVENT, this.selectFunction);

private function selectFunction(item:CustomEvent):void
{
   // Your Action
}

希望能帮助到你。

您的代码需要稍作修改; 替换下面的代码行

<mx:DataGridColumn dataField="selected" itemRenderer="mx.controls.CheckBox" />

<mx:DataGridColumn dataField="selected" itemRenderer="itemRenderer.checkBoxRndr" />

并在项目“ itemRenderer”中的项目中添加一个item-renderer组件(例如“ checkBoxRndr”)。

项目-renderer将是

 <?xml version="1.0" encoding="utf-8"?>
 <mx:HBox xmlns:mx="http://www.adobe.com/2006/mxml" width="100%" height="20" verticalAlign="middle" 
     verticalGap="0" horizontalGap="0" horizontalAlign="center" verticalScrollPolicy="off" horizontalScrollPolicy="off"
     paddingBottom="0" paddingLeft="0" paddingRight="0" paddingTop="0">
  <mx:Script>
    <![CDATA[

        override public function set data(value:Object):void{
            if(value != null){
                super.data = value;
                if(data.hasOwnProperty("selected") && data.selected != null){
                    rndrCheckBox.selected = data.selected;
                }
            }
        }
        private function onChange():void{
            data.selected = rndrCheckBox.selected;
        }

    ]]>
 </mx:Script>
 <mx:CheckBox id="rndrCheckBox" change="{onChange()}"/>
</mx:HBox>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM