カスタムデータGridの行背景色


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;
}