0
我有一个网格数据,并且想要根据条件手段设置网格行的bg颜色,如果有标志= 1,那么背景网格行将显示在灰色的颜色,否则,因为它是在行动脚本文件。我用blazeds服务。如何根据行动脚本文件中的条件设置背景颜色
请帮我一把。我已经尝试setStyle(),但没有成功。
在此先感谢。
我有一个网格数据,并且想要根据条件手段设置网格行的bg颜色,如果有标志= 1,那么背景网格行将显示在灰色的颜色,否则,因为它是在行动脚本文件。我用blazeds服务。如何根据行动脚本文件中的条件设置背景颜色
请帮我一把。我已经尝试setStyle(),但没有成功。
在此先感谢。
这是一个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"/>
这是我提出的最佳解决方案。 如果有人知道更好的方式我想看看:)
我正在使用自定义数据网格,所以它也会对它工作吗? verticalScrollPolicy =“on”height =“130”height =“true”color =“blue”width =“97.5%”horizontalScrollPolicy =“on”verticalScrollPolicy =“on”height =“130” > \t \t <控件:列>控制:色谱柱> 控制:MDataGrid> –
anshul
@anshul如果您的MDataGridColumn类扩展DataGridColumn,那么它应该没问题。 – Franz1986
:我制作了DynamicItemRenderer.as类文件,并将ur方法导入到mxml文件中。当我使用这个代码 ,它提供了一个错误“功能DynamicItemRenderer无法找到”。我也尝试通过使用此路径 ,但它失败了相同error.Please建议或有任何简单的解决方案为网格行着色。我是Flex中的新成员。 –
anshul