改变DataGrid单元格字体颜色

        DataGrid单元格的默认颜色是黑色的,但我们平常用时常常要改变单元格字体字体颜色。一条数据在状态大于零时显示为黑色,状态小于零时颜色为红色。以下是一个我遇到的问题,共享一下我的解决办法。

package com.palm.fontsColorDG
{
	import flash.display.Sprite;
	
	import mx.collections.ArrayCollection;
	import mx.controls.DataGrid;

	
	public class FontsColorDataGrid extends DataGrid
	{
		public var theProperty:String = "";
		/**判断单元格时使用的DataField**/
		private var _cDataField:Object=null;
		/**外部引用函数,与内置函数ControlFunc相似,通过一个值参数,
		 * 再根据自定义的判断规则,返回将显示的颜色值
		 * **/
		private var _controlFunc:Function=null;
		
		public function FontsColorDataGrid()
		{
			super();
		}
		
		override protected function drawRowBackground(s:Sprite, rowIndex:int, y:Number, height:Number, color:uint, dataIndex:int):void
		{
			var arr:ArrayCollection = dataProvider as ArrayCollection;
			if(arr == null || theProperty == "")
				return ;
			if (dataIndex < arr.length) {
//				var item:Object = arr.getItemAt(dataIndex);
//				if(item[theProperty] == Project.STATE_LIXIANG_0)
//					color = 0xff0000;
//				else
//					color = 0x0000ff;
			}
			super.drawRowBackground(s,rowIndex,y,height,color,dataIndex);
		}

		
		/**
		 * 设置行字体颜色
		 * */
		public function set ControlDataField(value:Object):void{
			_cDataField=value;
		}
		public function set ControlFunction(value:Function):void{
			_controlFunc=value;
		}
		override public function set dataProvider(value:Object):void{
			if(_cDataField!=null){
				for each(var item:Object in value){
					if(_controlFunc!=null)
						item.color=_controlFunc(item[_cDataField]);
					else
						item.color=ControlFunc(item[_cDataField]);
					
				}
			}
			super.dataProvider=value;
		}
		private function ControlFunc(data:Object):uint{
			if(data>0){
				return 0xff0000;
			}else if(data<0){
				return 0x0000ff;
			}
			return null;
		}
	}
}
package com.palm.fontsColorDG
{
	import mx.controls.dataGridClasses.DataGridItemRenderer;
	
	public class FontsColorDGIRenderer extends DataGridItemRenderer
	{
		public function FontsColorDGIRenderer()
		{
			super();
		}
		
		override public function set data(value:Object):void{
			this.setStyle("color",value.color);
			super.data=value;
		}
	}
}
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:local="*" xmlns:fontsColorDG="com.palm.fontsColorDG.*">
	<mx:Script>
		<![CDATA[
			
			 [Bindable]
			 private var DGArray:Array = [
	         {Artist:'Pavement', Album:'Slanted and Enchanted',money:"-100万", Price:-11.99},
	         {Artist:'Pavement', Album:'Slanted and Enchanted',money:"100万", Price:11.99},
	         {Artist:'Pavement', Album:'Slanted and Enchanted',money:"-100万", Price:-11.99},
	         {Artist:'Pavement', Album:'Slanted and Enchanted',money:"0万", Price:0},
	         {Artist:'Pavement', Album:'Slanted and Enchanted',money:"-100万", Price:11.99},
	         {Artist:'Pavement', Album:'Slanted and Enchanted',money:"100万", Price:-11.99}];

			private function ControlFunc(data:Object):uint{
				data=data.toString();
				var value:Number=Number(data);
				if(value>0){
					return 0x0066CC;
				}else if(value<0){
					return 0x333333;
				}
				return 0xdd0000;
			}
		]]>
	</mx:Script>
	<fontsColorDG:FontsColorDataGrid ControlDataField="Price" ControlFunction="{ControlFunc}" dataProvider="{DGArray}" editable="true">
		<fontsColorDG:columns>
			<mx:DataGridColumn dataField="Artist" itemRenderer="com.palm.fontsColorDG.FontsColorDGIRenderer"/>
			<mx:DataGridColumn dataField="Album" itemRenderer="com.palm.fontsColorDG.FontsColorDGIRenderer"/>
			<mx:DataGridColumn dataField="money" itemRenderer="com.palm.fontsColorDG.FontsColorDGIRenderer"/>
			<mx:DataGridColumn dataField="Price" itemRenderer="com.palm.fontsColorDG.FontsColorDGIRenderer"/>
		</fontsColorDG:columns>
	</fontsColorDG:FontsColorDataGrid>
</mx:Application>




  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值