1,新建类(重写DataGrid)
package myas.control
{
import mx.controls.DataGrid;
import mx.controls.*;
import flash.display.Shape;
import mx.core.FlexShape;
import flash.display.Graphics;
import flash.display.Sprite;
import mx.rpc.events.AbstractEvent;
import mx.collections.ArrayCollection;
import flash.events.Event;
public class RowDataGrid extends DataGrid
{
private var _rowColorFunction:Function;
public function RowDataGrid()
{
super();
}
public function set rowColorFunction(f:Function):void
{
this._rowColorFunction = f;
}
public function get rowColorFunction():Function
{
return this._rowColorFunction;
}
override protected function drawRowBackground(s:Sprite,rowIndex:int,y:Number, height:Number, color:uint, dataIndex:int):void
{
if(this.rowColorFunction != null ){
if( dataIndex < this.dataProvider.length ){
var item:Object = this.dataProvider.getItemAt(dataIndex);
color = this.rowColorFunction.call(this, item, color);
}
}
super.drawRowBackground(s, rowIndex, y, height, color, dataIndex);
}
}
}
2,调用,
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:control="myas.control.*">
<mx:Script>
<![CDATA[
private function setCustomColor(item:Object, color:uint):uint
{
if( item['c3'] == "r6.c3" )// c3="r6.c3",c4="r7.c4"
{
return 0xFF0033;
}
return color;
}
private var i:uint=179845;
]]>
</mx:Script>
<control:RowDataGrid dataProvider="{arrColl}" rowColorFunction="setCustomColor">
<control:columns>
<mx:DataGridColumn dataField="c1"
headerText="Column 1" />
<mx:DataGridColumn dataField="c2"
headerText="Column 2" />
<mx:DataGridColumn dataField="c3"
headerText="Column 3" />
<mx:DataGridColumn dataField="c4"
headerText="Column 4" />
</control:columns>
</control:RowDataGrid>
<mx:ArrayCollection id="arrColl">
<mx:source>
<mx:Array>
<mx:Object c1="r1.c1" c2="r1.c2" c3="r1.c3" c4="r1.c4"/>
<mx:Object c1="r2.c1" c2="r2.c2" c3="r2.c3" c4="r2.c4"/>
<mx:Object c1="r3.c1" c2="r3.c2" c3="r3.c3" c4="r3.c4"/>
<mx:Object c1="r4.c1" c2="r4.c2" c3="r4.c3" c4="r4.c4"/>
<mx:Object c1="r5.c1" c2="r5.c2" c3="r5.c3" c4="r5.c4"/>
<mx:Object c1="r6.c1" c2="r6.c2" c3="r6.c3" c4="r6.c4"/>
<mx:Object c1="r7.c1" c2="r7.c2" c3="r7.c3" c4="r7.c4"/>
<mx:Object c1="r8.c1" c2="r8.c2" c3="r8.c3" c4="r8.c4"/>
<mx:Object c1="r9.c1" c2="r9.c2" c3="r9.c3" c4="r9.c4"/>
</mx:Array>
</mx:source>
</mx:ArrayCollection>
</mx:Application>
package myas.control
{
import mx.controls.DataGrid;
import mx.controls.*;
import flash.display.Shape;
import mx.core.FlexShape;
import flash.display.Graphics;
import flash.display.Sprite;
import mx.rpc.events.AbstractEvent;
import mx.collections.ArrayCollection;
import flash.events.Event;
public class RowDataGrid extends DataGrid
{
private var _rowColorFunction:Function;
public function RowDataGrid()
{
super();
}
public function set rowColorFunction(f:Function):void
{
this._rowColorFunction = f;
}
public function get rowColorFunction():Function
{
return this._rowColorFunction;
}
override protected function drawRowBackground(s:Sprite,rowIndex:int,y:Number, height:Number, color:uint, dataIndex:int):void
{
if(this.rowColorFunction != null ){
if( dataIndex < this.dataProvider.length ){
var item:Object = this.dataProvider.getItemAt(dataIndex);
color = this.rowColorFunction.call(this, item, color);
}
}
super.drawRowBackground(s, rowIndex, y, height, color, dataIndex);
}
}
}
2,调用,
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:control="myas.control.*">
<mx:Script>
<![CDATA[
private function setCustomColor(item:Object, color:uint):uint
{
if( item['c3'] == "r6.c3" )// c3="r6.c3",c4="r7.c4"
{
return 0xFF0033;
}
return color;
}
private var i:uint=179845;
]]>
</mx:Script>
<control:RowDataGrid dataProvider="{arrColl}" rowColorFunction="setCustomColor">
<control:columns>
<mx:DataGridColumn dataField="c1"
headerText="Column 1" />
<mx:DataGridColumn dataField="c2"
headerText="Column 2" />
<mx:DataGridColumn dataField="c3"
headerText="Column 3" />
<mx:DataGridColumn dataField="c4"
headerText="Column 4" />
</control:columns>
</control:RowDataGrid>
<mx:ArrayCollection id="arrColl">
<mx:source>
<mx:Array>
<mx:Object c1="r1.c1" c2="r1.c2" c3="r1.c3" c4="r1.c4"/>
<mx:Object c1="r2.c1" c2="r2.c2" c3="r2.c3" c4="r2.c4"/>
<mx:Object c1="r3.c1" c2="r3.c2" c3="r3.c3" c4="r3.c4"/>
<mx:Object c1="r4.c1" c2="r4.c2" c3="r4.c3" c4="r4.c4"/>
<mx:Object c1="r5.c1" c2="r5.c2" c3="r5.c3" c4="r5.c4"/>
<mx:Object c1="r6.c1" c2="r6.c2" c3="r6.c3" c4="r6.c4"/>
<mx:Object c1="r7.c1" c2="r7.c2" c3="r7.c3" c4="r7.c4"/>
<mx:Object c1="r8.c1" c2="r8.c2" c3="r8.c3" c4="r8.c4"/>
<mx:Object c1="r9.c1" c2="r9.c2" c3="r9.c3" c4="r9.c4"/>
</mx:Array>
</mx:source>
</mx:ArrayCollection>
</mx:Application>