论坛首页 编程语言技术论坛

多种DataGrid ItemRender实现

浏览 4594 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-12-10   最后修改:2009-12-10

      在Flex开发中,可能在展示数据方面,DataGrid是用得最多的组件。在默认情况下,DataGrid的单元格是String类型的数据,但是有时候我们为了满足一些特殊的开发需求,需要自定义特殊的DataGrid Itemrender。下面几种常见的ItemRender实现:

  

    1.CheckBoxr渲染:

final public class CheckBoxItemDataRenderer extends CheckBox
	{
		public function CheckBoxItemDataRenderer()
		{
			super();
			
			this.addEventListener(Event.CHANGE, changeHandler);
		}
		
		override public function set data(value:Object):void
		{
			super.data = value;
			this.selected = listData.label == 'true';
		}
		
		protected function changeHandler(event : Event) : void
		{
			data.@selected = this.selected;
		}
		
	}

  

  2.ColorPicker渲染:

final public class ColorItemRender extends ColorPicker implements IVariousDataGridItem
	{
		public function ColorItemRender()
		{
			super();
			
			this.width = 22;
			this.height = 22;
			
			this.addEventListener(FlexEvent.VALUE_COMMIT, valueCommitHandler);
		}
		
		private var _itemData : Object;
		
		private function valueCommitHandler(event : FlexEvent) : void
		{
			if(_itemData)
			_itemData.pvalue = super.selectedColor;
		}
		
		public function set data(value : Object):void
		{
			
			_itemData = value;
			super.selectedColor = Number(value.pvalue);
		}
		
		private function rgbToHex(color:uint):String
		{
			// Find hex number in the RGB offset
			var colorInHex:String = color.toString(16);
			var c:String = "00000" + colorInHex;
			var e:int = c.length;
			c = "0x" + c.substring(e - 6, e);
			
			return c.toUpperCase();
		}
		
		
	}

  

 

    3.Hsilder渲染:

final public class HSliderItemRender extends HSlider implements IVariousDataGridItem
	{
		public function HSliderItemRender(min:Number,max:Number,interval:Number,lbls:Array)
		{
			super();
			this.minimum=min;
			this.maximum=max;
			this.tickInterval=interval;
			this.snapInterval=1;
            this.labels=lbls;
			this.width = 150;
			this.height = 22;
			
			this.addEventListener(FlexEvent.VALUE_COMMIT, valueCommitHandler);
		}
		
		private var _itemData : Object;
		public function get text() : String{return String(super.value);}
		public function set text(avalue : String) : void{super.value=Number(avalue);}
		private function valueCommitHandler(event : FlexEvent) : void
		{
			if(_itemData)
			_itemData.pvalue = super.value
		}
		
		public function set data(value : Object):void
		{
			
			_itemData = value;
			super.value = Number(_itemData.pvalue);
		}
		
	}

 

 

    4.TextInput渲染:

 

final 	public class StringItemRender extends TextInput implements IVariousDataGridItem
	{
		public function StringItemRender()
		{
			super();
			
			this.width = 80;
			this.height = 25;
			
			this.addEventListener(FlexEvent.VALUE_COMMIT, valueCommitHandler);
		}
		
		private var _itemData : Object;
		
		private function valueCommitHandler(event : FlexEvent) : void
		{
			if(_itemData)
			_itemData.pvalue = super.text;
		}
		
		override public function set data(value : Object):void
		{
			super.data = value;
			
			this.text = value.pvalue;
			_itemData = value;
		}
		
	}

  

 

    5.CheckBox渲染:

final public class EnumItemRender extends ComboBox implements IVariousDataGridItem
	{

		private var enumString:String="";
		public function EnumItemRender(aEnumString:String="")
		{
			super();
			this.width = 80;
			this.height = 25;
			this.enumString=aEnumString;
			this.addEventListener(FlexEvent.VALUE_COMMIT, valueCommitHandler);
		}
		
		private var _itemData : Object;
		
		private function valueCommitHandler(event : FlexEvent) : void
		{
			if(_itemData)
			_itemData.pvalue = super.selectedItem;
		}
		
		override public function set data(value : Object):void
		{
			_itemData = value;

			super.data = _itemData;
			super.dataProvider = enumString.split("|");
			super.selectedItem = _itemData.pvalue;
			
		}
	}

 

  6.需要实现的接口:

public interface IVariousDataGridItem extends IUIComponent
	{
		function get text() : String;
		function set text(value : String) : void;
		
		function set data(value : Object) : void;
	}

  

   

PS:其实DataGrid的ItmerRender实现大同小异,只要是继承自不同的组件,然后override data的Set函数。

   发表时间:2009-12-29  
能够附效果图讲解就好了
0 请登录后投票
   发表时间:2010-01-12  
我想问你一下能写一个例子,说明怎么应用好吗
0 请登录后投票
   发表时间:2010-02-22  
很好用  lz辛苦了
0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics