当前位置: 代码迷 >> Web前端 >> 自定义DataGrid的行背景色彩
  详细解决方案

自定义DataGrid的行背景色彩

热度:273   发布时间:2012-11-22 00:16:41.0
自定义DataGrid的行背景颜色
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;
}
  相关解决方案