浏览 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函数。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-12-29
能够附效果图讲解就好了
|
|
返回顶楼 | |
发表时间:2010-01-12
我想问你一下能写一个例子,说明怎么应用好吗
|
|
返回顶楼 | |
发表时间:2010-02-22
很好用 lz辛苦了
|
|
返回顶楼 | |