2014-01-13 30 views
0

我有一个网格数据,并且想要根据条件手段设置网格行的bg颜色,如果有标志= 1,那么背景网格行将显示在灰色的颜色,否则,因为它是在行动脚本文件。我用blazeds服务。如何根据行动脚本文件中的条件设置背景颜色

请帮我一把。我已经尝试setStyle(),但没有成功。

在此先感谢。

回答

0

这是一个actionscript 3解决方案。 你需要在一个特殊的itemRenderer类中做到这一点。 我建议你扩展Label类,并在其中覆盖updateDisplayList函数。

public class DynamicItemRenderer extends Label 
{ 
    private var _backgroundColorFunction:Function=null; 

    override protected function commitProperties():void 
    { 
     super.commitProperties(); 
     var cellBackgroundColor:Boolean=this.document.hasOwnProperty("cellColorFunction"); 
     if (cellBackgroundColor && _backgroundColorFunction == null) 
     { 
      _backgroundColorFunction=this.document.cellColorFunction as Function; 
     } 
    } 

    override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void 
    { 
     super.updateDisplayList(unscaledWidth, unscaledHeight); 
     if (_backgroundColorFunction != null) 
     { 
      _backgroundColorFunction.call(this, data, graphics, unscaledWidth, unscaledHeight); 
     } 
    } 
} 

然后在MXML文件,你的DataGrid的定义,你需要建立的是将颜色的细胞,这将是你的backgroundColorFunction的功能。

<mx:Script> 
    <![CDATA[ 
     public function cellColorFunction(... args):void 
     { 
      var item:Object=args[0]; 
      var g:Graphics=args[1] as Graphics; 
      var width:Number=args[2] as Number; 
      var height:Number=args[3] as Number; 

      g.clear(); 
      if (grid.isItemSelected(item) || grid.isItemHighlighted(item)) 
       return; 
      if (item.flag == 1) 
      { 
       g.beginFill(0xE2E2E2); 
       g.drawRect(0, 0, width, height + 4); 
       g.endFill(); 
      } 
     } 
    ]]> 
</mx:Script> 

然后你需要在你的gridColumn上定义项目渲染器,就是这样。

<mx:DataGridColumn itemRenderer="path.to.your.DynamicItemRenderer"/> 

这是我提出的最佳解决方案。 如果有人知道更好的方式我想看看:)

+0

我正在使用自定义数据网格,所以它也会对它工作吗? verticalScrollPolicy =“on”height =“130”height =“true”color =“blue”width =“97.5%”horizo​​ntalScrollPolicy =“on”verticalScrollPolicy =“on”height =“130” > \t \t <控件:列> anshul

+0

@anshul如果您的MDataGridColumn类扩展DataGridColumn,那么它应该没问题。 – Franz1986

+0

:我制作了DynamicItemRenderer.as类文件,并将ur方法导入到mxml文件中。当我使用这个代码,它提供了一个错误“功能DynamicItemRenderer无法找到”。我也尝试通过使用此路径,但它失败了相同error.Please建议或有任何简单的解决方案为网格行着色。我是Flex中的新成员。 – anshul

相关问题