Flex Datagird行颜色设置问题,在datagird是flex中非常重要的一个数据组件,也是最常用的一个组件,下面就2中场景给予实现。
datagird其中一个单元格数据颜色设置,如下:
head1 | head2 | head3 |
AAAA | BBB | CCCDDDEEE |
现在要求第一行第三列数据中的DDD显示红色
实现方式:直接上源码:
<mx:DataGrid width="100%" height="100" dataProvider="{arryInfo}" verticalAlign="middle" verticalScrollPolicy="on" variableRowHeight="true" headerHeight="20"> <mx:columns> <mx:DataGridColumn headerText="head1" dataField="f1" textAlign="center" width="100" editable="false" /> <mx:DataGridColumn headerText="head2"dataField="f2" editable="false" width="100" textAlign="center"/> <mx:DataGridColumn headerText="head3"dataField="f3" editable="false" textAlign="left" wordWrap="true"> <mx:itemRenderer> <mx:Component> <itemRenderers:DataGirdFontItemRenderer /> </mx:Component> </mx:itemRenderer> </mx:DataGridColumn> </mx:columns> </mx:DataGrid>
自定义一个列DataGirdFontItemRenderer,处理该列颜色问题,DataGirdFontItemRenderer源码:
<?xml version="1.0" encoding="utf-8"?> <mx:Label xmlns:mx="http://www.adobe.com/2006/mxml" truncateToFit="true"> <mx:Script> <![CDATA[ public override function set data(value:Object):void{ super.data = value; var str:String = value.f3+"";//获取列的数据 if(-1!= str.indexOf("*")){//给每列数据一个标致, //this.height=50; this.htmlText='CCC<font color="#FF0000">DDD</font>EEE'; } } ]]> </mx:Script> </mx:Label>
这样就可以设置datagird一个单元格里面的内容显示不同颜色,如果所有的列数据都需要设置颜色,就不要
if(-1!= str.indexOf("*"))条件