[英]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.