首页  »   Web前端

AdvancedDatagrid改变行的色彩

网友分享于:2013-09-05  浏览:51次
AdvancedDatagrid改变行的颜色

最早我尝试重写AdvancedDatagrid的drawRowBackGrounds方法,如下:

 

override protected function drawRowBackground(s:Sprite,rowIndex:int,y:Number, height:Number, color:uint, dataIndex:int):void 

if(dataProvider){

var hcv:HierarchicalCollectionView = dataProvider as HierarchicalCollectionView ;

var hd:HierarchicalData = hcv.source as HierarchicalData ;

var ac:ArrayCollection = hd.source as ArrayCollection ;

if(ac.length > 0 && dataIndex < ac.length){

var item:AlarmVO = ac[dataIndex] as AlarmVO ;

if(item.activeStatus == "0"){

color = 0xCCCCCC ;

}

}

super.drawRowBackground(s, rowIndex, y, height, color, dataIndex);

}

}

 

存在问题:当有节点打开或关闭的时候,变灰的行是错误的。

 

改进方法来自这里http://www.forestandthetrees.com/2008/10/21/adg-color-rows-by-depth/

用到了之前没了解过的类 HierarchicalCollectionViewCursor 

 

override protected function drawRowBackground (s : Sprite,
            rowIndex : int, y : Number, height : Number, color : uint,
            dataIndex : int) : void
        {
              var dp:HierarchicalCollectionView = dataProvider as
                  HierarchicalCollectionView;
              //if the index is less than the length, the row has no data
              //content
              if (dp != null){
                  if (dataIndex < dp.length) {
                      var cursor : HierarchicalCollectionViewCursor =
                          dp.createCursor() as HierarchicalCollectionViewCursor;
                     cursor.seek(CursorBookmark.FIRST, dataIndex);
                     var o : Object = cursor.current;
                     switch (cursor.currentDepth) {
                         case 1:
                             color = 0xffcccc;
                             break;
                         case 2:
                             color = 0xccffcc;
                             break;
                         case 3:
                             color = 0xccccff;
                             break;
                     }
                  }
              }
              super.drawRowBackground(s,rowIndex,y,height,color,dataIndex);
        }

 

相关解决方案

最新解决方案