可以动态添加行背景色的flex datagrid控件

来源:互联网 发布:奥迪a8矩阵式led大灯 编辑:程序博客网 时间:2024/05/29 16:30

flex自带的datagrid控件是不能改变行的背景色的,项目中间遇到这种需求了,要根据数据某个属性来让每行显示不同的背景色,我们可以重写datagrid控件来实现该功能。

package com.iman.nrms.nrmcs.ascript{import flash.display.Sprite;import mx.controls.DataGrid;import mx.controls.listClasses.IListItemRenderer;/*      添加根据条件改变该行颜色功能*/public class ImanZynDataGrid extends DataGrid{public var rowColorFunction:Function;//若需要默认颜色,则该函数返回0即可,否则返回需要的颜色public function ImanZynDataGrid(){super();}override protected function drawRowBackground(s:Sprite, rowIndex:int, y:Number, height:Number, color:uint, dataIndex:int):void{var oldColor:uint = color;//存贮默认颜色,若没有返回值,则显示皮肤定义的控件默认颜色if(rowColorFunction != null){var item:Object;if(dataIndex < dataProvider.length){item = dataProvider[dataIndex];}if(item){//color = rowColorFunction(item,rowIndex,dataIndex,color);color = rowColorFunction(item);if(color == 0){color = oldColor;}//this.setStyle("rollOverColor",""+ rowColorFunction(item)+"");//this.setStyle("selectionColor",""+ rowColorFunction(item)+"");}}super.drawRowBackground(s,rowIndex,y,height,color,dataIndex);}  }}

 

mxml代码

//更改背景色颜色
   protected function changeRowColor(o:Object):uint
   {
    //是否可分配  1 为可分配(默认颜色)      0 为不可分配(红色)   2不可操作(黄色)
    var color:uint;
    if(o.isDistribution=="0"){
     color = 0xff9900;
    }else if(o.isDistribution=="1" || o.isDistribution=="" || o.isDistribution==null){
     color = 0xd4e1f2;
    }else if(o.isDistribution=="2"){
     color = 0xFFF68F;
    }
    return color;
   }

<ascript1:ImanZynDataGrid rowCount="8" rowColorFunction="changeRowColor" selectable="false" dataProvider="{new ArrayCollection()}"  id="curcuit" width="100%"><ascript1:columns><mx:DataGridColumn dataField="" headerText="不可分配"><mx:itemRenderer><fx:Component><mx:CheckBox enabled="{data.isDistribution=='2'?false:true}" textAlign="center" selected="{data.isDistribution=='1'||data.isDistribution=='' || data.isDistribution==null?false:true}" click="outerDocument.checkBox_clickHandler(event,data);data.selected=!data.selected;data.isDistribution=='0'?data.isDistribution='1':data.isDistribution='0'" /></fx:Component></mx:itemRenderer></mx:DataGridColumn><mx:DataGridColumn dataField="name" headerText="电路编号"/><!--<mx:DataGridColumn dataField="asiteName" headerText="A端站点"/>--><mx:DataGridColumn dataField="aneName" headerText="A端设备"/><mx:DataGridColumn dataField="aportName" headerText="A端端口"/><mx:DataGridColumn dataField="aodfPortName" headerText="A端DDF"/><!--<mx:DataGridColumn dataField="zsiteName" headerText="Z段站点"/>--><mx:DataGridColumn dataField="zneName" headerText="Z端设备"/><mx:DataGridColumn dataField="zportName" headerText="Z端端口"/><mx:DataGridColumn dataField="zddfPort" headerText="Z端DDF"/></ascript1:columns></ascript1:ImanZynDataGrid>

  此处有一个问题,当鼠标放到行数据上的时候,该行会变色,会影响自定义的背景色,将datagrid的selected设置为false就可以解决该困扰了。

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 孩子学习不认真怎么办 孩子平时不细心怎么办? 脖子出现黑圈怎么办 简历留白太多怎么办 excel数字外面加个圈怎么办 电脑输入法数字数不上怎么办 大班教案迷路了怎么办 迷路了怎么办活动反思 头突然眩晕是怎么办 孩子学习拖拉懒惰怎么办 头发晕想睡觉怎么办 五年级错别字多怎么办 入党志愿书写错字怎么办 高中不会写作文怎么办 考试不会写作文怎么办 高考不会写作文怎么办 孩子总是写错字怎么办 小孩总是写错字怎么办 孩子马虎不认真怎么办 小孩计算老出错怎么办 小学生计算总出错怎么办 高中考试总粗心怎么办 孩子考试总是粗心怎么办 一年级孩子考试粗心怎么办 老师说孩子粗心怎么办 计算题总出错怎么办 计算题总是出错怎么办 数学老是计算错误怎么办? 苗木抵扣计算错误怎么办 表格中计算错误怎么办 孩子电视瘾太大怎么办 孩子考试前失眠怎么办 孩子上网瘾了怎么办 孩子考试差家长怎么办 手指肿痛有脓包怎么办 手指脓出来红肿怎么办 手指提重物发麻怎么办 小孩拧伤了怎么办 从小就成绩差怎么办 孩子考试总马虎怎么办 上课不认真怎么办初中