自定义AdvancedDataGrid的groupItemRenderer

package AddrList
{
	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;
			for(var i:int =0;i<a.length;i++)
			{
				a[i].checked = 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;
			}
			label.x=label.x + 20;
			checkBox.selected = data.selectedState;		
		}
	}
}
posted @ 2010-12-14 10:44  骨头  阅读(1109)  评论(1编辑  收藏  举报