复选框代码:
package com.aliyun.moonmm.vm.controls.advanceDataGridClasses { import flash.events.Event; import flash.events.MouseEvent; import mx.collections.ArrayCollection; import mx.controls.AdvancedDataGrid; import mx.controls.CheckBox; import mx.controls.advancedDataGridClasses.AdvancedDataGridGroupItemRenderer; public class AdvancedDataGridGroupItemRendererEx extends AdvancedDataGridGroupItemRenderer { private var checkBox : CheckBox; public function AdvancedDataGridGroupItemRendererEx() { super(); } override protected function createChildren():void { super.createChildren(); checkBox=new CheckBox(); checkBox.addEventListener(MouseEvent.CLICK,onChange); checkBox.x = 4; checkBox.y=label.y + 8; addChild(checkBox); } protected function onChange(e:MouseEvent):void { e.stopPropagation(); var cbx:CheckBox = e.currentTarget as CheckBox; var a:ArrayCollection = this.data.children as ArrayCollection; if(a != null){ for(var i:int =0;i<a.length;i++) { a[i].selected = cbx.selected; a[i].selectedState = cbx.selected; } } data.selectedState = cbx.selected; var d:AdvancedDataGrid = this.owner as AdvancedDataGrid; d.invalidateList(); } override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void { super.updateDisplayList(unscaledWidth, unscaledHeight); if (disclosureIcon) { disclosureIcon.x=disclosureIcon.x + 20; } if (icon) { icon.x=icon.x + 20; checkBox.x = icon.x - 30; } label.x=label.x + 20; checkBox.selected = data.selectedState; } } }
[Embed(source="/../src/images/a_icon.png")] public static const aIcon:Class; [Embed(source="/../src/images/b_icon.gif")] public static const bIcon:Class; [Embed(source="/../src/images/c_win.gif")] public static const cIcon:Class; public static function iconFunc(item:Object):Class { if(item.hasOwnProperty("id")){ return Constant.aIcon; } else{ switch(item.imageType){ case 1:return Constant.aIcon; case 2:return Constant.bIcon; default:return Constant.cIcon; } } return null; }
<mx:AdvancedDataGrid rowHeight="25" id="dataGridList" height="100%" width="100%" iconFunction="iconFunc"> private function iconFunc(item:Object):Class { return Constant.iconFunc(item); }
将复选框加入 AdvancedDataGrid 中
var a:ClassFactory = new ClassFactory(AdvancedDataGridGroupItemRendererEx); dataGridList.groupItemRenderer = a;