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就可以解决该困扰了。
分享到:
相关推荐
felx和springHibernate整合传递二进制数据到表中并在flex的dataGrid控件中显示的实践
flex datagrid 改变指定行的背景颜色,可直接使用
Flex4.6 开发的关于DataGrid控件,在其中嵌套了comboBox,控制是否可航编辑,添加删除一行,光表定位,查了好些资料,可直接运行
flex datagrid 实现合计功能控件包 带源码,demo fxp是flex4的工程文件,导入到工作空间即可 直接导入项目即可。 更多访问我的blog www.dplayer.net
这是我自己开发的一个dataGrid分页的控件,上传的资源是一个打成包的flex项目,这个控件在查询数据时是与后台进行实时交互的,表格的表头样式是重写皮肤类进行定义的,而隔行变色是通过css来实现的。其中最重要的...
NULL 博文链接:https://ln-ydc.iteye.com/blog/1462633
datagrid设行背景色示例,提供了继承好的datagrid子类,
Flex DataGrid 改变某一行的背景颜色,自定义的DataGrid组件
DataGrid 控件是一种类似于电子数据表的绑定控件,可以显示一系列行和列来表示 Recordset 对象的记录和字段。可以使用 DataGrid 来创建一个允许最终用户阅读和写入到绝大多数数据库的应用程序。DataGrid 控件可以在...
vb中datagrid控件的详细使用方法,拿出来给大家看看!!!!是学习datagrid控件的好助手
wpf中datagrid动态设置单元格背景颜色。
flex datagrid pagination, flex分页组件
Flex dataGrid 全选、反选 checkBox 不是很完善,但很有借鉴意义
DataGrid控件是操作表格、数据库的重要控件,这里是其用法详解
Windows窗体DataGrid控件是NET 1.0/1.1推出的控件,在VS2005中亦可以继续使用,虽然它在功效方面不如NET 2.0新增的控件DataGridView,但它仍有用武之处,特别是对于已完成的项目中使用了该组件时,没有必要更换它,...
flex 通过读取xml文件 实现动态DataGrid数据列表
FLEX的datagrid合计、平均值,很好的例子代码拿来就可以用
flex datagrid资料,下载的别人的,想弄点分数啊
解压后,点bat对datagrid 控件 进行注册