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就可以解决该困扰了。
分享到:
相关推荐
通过子类化,我们可以覆盖或扩展原有组件的功能,实现特定的需求,如动态改变行背景色。 在实际的代码实现中,可能涉及以下步骤: 1. **数据绑定**:首先,你需要将数据源绑定到 `Datagrid`,这可以是数组集合、...
在Flex开发中,DataGrid控件是用于展示数据表格的常用组件,它可以高效地呈现大量结构化信息。在某些情况下,我们可能需要根据特定条件改变DataGrid中的某一行或几行的背景颜色,以突出显示或者区分不同的数据状态。...
在开发基于Adobe Flex的用户界面时,Datagrid控件是一个常用的数据展示组件,它允许我们以表格形式展示数据。在实际应用中,我们经常需要根据特定条件或者需求自定义Datagrid的行背景色,以增强视觉效果,或者突出...
虽然Flex主要应用于Flash开发,它的DataGrid控件同样具备数据绑定、排序和分页等功能,适用于创建动态、交互性的数据展示。 总结,DataGrid控件是.NET开发中不可或缺的一部分,它提供了强大的数据展示和操作能力。...
下面将详细介绍如何在Flex中实现Datagrid动态改变行颜色。 首先,我们需要了解Flex中的Datagrid组件。Datagrid是MX组件库中的一个控件,它允许我们显示二维的数据集合,并支持排序、分页和选择功能。默认情况下,...
你可以为整个DataGrid设置背景色,也可以为特定行或列设置不同的颜色,以达到视觉效果或强调特定数据的目的。 5. **Flash集成**: 虽然Flex和Flash在某些方面有交集,但它们在技术上是独立的。在描述中提到的"flash ...
6. **样式和外观**:为了提供良好的用户体验,可以自定义CellEditor的样式,如背景色、字体、边框等,以及提示列表的显示效果,如高度、动画效果等。 在实际开发中,`src`文件夹可能包含了实现这一功能的源代码,...
在本篇文章中,我们将探讨如何在Flash中对DataGrid组件进行自定义,使其显示交替的行背景颜色(即一行白色,一行灰色)。这种方法类似于Flex框架中的DataGrid样式,并且能够提高用户界面的可读性和美观度。下面将...
通过上述步骤,我们可以在Flex DataGrid中实现根据数据项属性值动态改变行背景色的功能。这不仅增强了界面的视觉效果,还提高了用户体验,因为它允许开发者对信息的重要性和状态进行更直观的表达。 文档最后还提到...
2. Colorpicker:Colorpicker 控件允许用户选择颜色,常用于颜色配置或设置背景色等场景。 3. Combobox:Combobox 是一个组合了下拉列表的文本输入框,用户可以选择列表中的选项或者自定义输入。 4. Datagrid:...
DataGrid控件是Flex中用来展示表格数据的组件,它可以显示多行多列的数据,并提供了排序、选择、编辑等交互功能。在实际应用中,我们经常需要根据数据的不同状态或属性来改变单元格的背景色或字体色,以增强视觉效果...
例如,如果你试图改变列表中第五行的第四列背景色,你需要注意,一旦用户滚动列表,这个渲染器可能会被用来显示其他数据,因为它会被复用。因此,正确的做法是让渲染器根据所显示的数据动态地改变其自身状态。 内联...
自定义GridItemRenderer可以方便地改变子表格的外观,比如调整边框、背景色、字体等。同时,确保子表格的交互行为(如排序、选择等)与主表格保持一致,提供良好的用户体验。 6. **性能优化**: 在处理大量数据时...
例如,在给定的部分内容中提到了字体大小、颜色及背景色的设置。虽然这部分内容似乎不太完整,但可以推断出这是在Flex中对基本元素进行样式设置的例子。 #### 示例代码分析: ```xml ``` - **`fontSize`**: 设置...
通常,DataGrid控件会显示从0开始的行索引,但这些行号并不总是固定的。当用户滚动数据时,行号也会随之滚动,这可能对用户理解和跟踪数据造成困扰。因此,“显示固定行号”的需求意味着我们需要创建一种机制,使得...