多种DataGrid ItemRender实现

xiaoxiao2025-02-13  15

      在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函数。

转载请注明原文地址: https://www.6miu.com/read-5024668.html

最新回复(0)