1)继承AdvancedDataGrid/DataGrid
package component { import flash.display.Sprite; import mx.collections.ArrayCollection; import mx.controls.DataGrid; public class RowColorDataGrid extends AdvancedDatagrid { public var rowColorFunction:Function; override protected function drawRowBackground(s:Sprite, rowIndex:int, y:Number, height:Number, color:uint, dataIndex:int):void { if(rowColorFunction != null) { var item:Object; if(dataIndex < dataProvider.length) { item = dataProvider[dataIndex]; } if(item) { color = rowColorFunction(item, rowIndex, dataIndex, color); } } super.drawRowBackground(s, rowIndex, y, height, color, dataIndex); } } }
2)使用RowColorDataGrid
<component:RowColorDataGrid rowColorFunction="calcRowColor"/>
3)自定义calRowColor方法
private function calcRowColor(item:Object, rowIndex:int, dataIndex:int, color:uint):uint { var operationStatus:String=item.operationStatus; var backgroundColor:uint=0xFFFFFF; if(operationStatus ==OperationStatus.Added){ backgroundColor=0xa9dc84; }else if(operationStatus == OperationStatus.Modified){ backgroundColor=0xa28cd4; }else if(operationStatus==OperationStatus.Deleted){ backgroundColor=0xd49251; }else if(operationStatus ==OperationStatus.Historical){ if(rowIndex%2==0){ backgroundColor=0xFFFFFF; }else{ backgroundColor=0xE2E2E2; } }else{ Alert.show("operation status is not supported","Message"); } return backgroundColor; }