温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Flex DataGrid背景色如何调试

发布时间:2021-12-04 16:21:16 来源:亿速云 阅读:226 作者:小新 栏目:编程语言

这篇文章主要为大家展示了“Flex DataGrid背景色如何调试”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Flex DataGrid背景色如何调试”这篇文章吧。

Flex DataGrid背景颜色调试

在Flex运用中经常提到的有关Flex DataGrid问题是如何改变Flex DataGrid单元格(cell),列(column)和行(row)的背景颜色(backgroundcolor)这里对这3种颜色做一个总结。

1.设置行(row)的背景色

主要是通过对Flex DataGrid扩展,对protected函数drawRowBackground()进行重写,具体代码如下:

overrideprotectedfunctiondrawRowBackground(s:Sprite,rowIndex:int,y:Number,height:Number,color:uint,dataIndex:int):void  {  if(dataIndex>=dataProvider.length){  super.drawRowBackground(s,rowIndex,y,height,color,dataIndex);  return;  }  if(dataProvider.getItemAt(dataIndex).col3<2000){//setcoloraccordinttodatas  super.drawRowBackground(s,rowIndex,y,height,0xC0C0C0,dataIndex);  }else{  super.drawRowBackground(s,rowIndex,y,height,color,dataIndex);  }  }

这段代码中根据Flex DataGrid的数据源进行判断来设置背景色,但是它有个缺陷,就是这个具体的背景色我们无法自己灵活指定。因此派生出新的CustomRowColorFlex DataGrid,具体代码如下:

packagecwmlab.controls  {  importmx.controls.*;  importflash.display.Shape;  importmx.core.FlexShape;  importflash.display.Graphics;  importflash.display.Sprite;  importmx.rpc.events.AbstractEvent;  importmx.collections.ArrayCollection;  importflash.events.Event;  /**  *Thisisanextendedversionofthebuilt-inFlexFlex DataGrid.  *Thisextendedversionhasthecorrectoverridelogicinit  *todrawthebackgroundcolorofthecells,basedonthevalueofthe  *dataintherow.  **/   publicclassCustomRowColorFlex DataGridextendsFlex DataGrid  {  privatevar_rowColorFunction:Function;  publicfunctionCustomRowColorFlex DataGrid()  {  super();  }  /**  *Auser-definedfunctionthatwillreturnthecorrectcolorofthe  *row.Usuallybasedontherowdata.  *  *expectedfunctionsignature:  *publicfunctionF(item:Object,defaultColor:uint):uint  **/   publicfunctionsetrowColorFunction(f:Function):void  {  this._rowColorFunction=f;  }   publicfunctiongetrowColorFunction():Function  {  returnthis._rowColorFunction;  }   /**  *Drawsarowbackground  *atthepositionandheightspecifiedusingthe  *colorspecified.ThisimplementationcreatesaShapeasa  *childoftheinputSpriteandfillsitwiththeappropriatecolor.  *Thismethodalsousesthe<code>backgroundAlpha</code>styleproperty  *settingtodeterminethetransparencyofthebackgroundcolor.  *  *@paramsASpritethatwillcontainadisplayobject  *thatcontainsthegraphicsforthatrow.  *  *@paramrowIndexTherow'sindexinthesetofdisplayedrows.The  *headerdoesnotcount,thetopmostvisiblerowhasarowindexof0.  *Thisisusedtokeeptrackoftheobjectsusedfordrawing  *backgroundssoaparticularrowcanre-usethesamedisplayobject  *eventhoughtheindexoftheitemthatrowisrenderinghaschanged.  *  *@paramyThesuggestedypositionforthebackground  *@paramheightThesuggestedheightfortheindicator  *@paramcolorThesuggestedcolorfortheindicator  *  *@paramdataIndexTheindexoftheitemforthatrowinthe  *dataprovider.Thiscanbeusedtocolorthe10thitemdifferently  *forexample.  */   overrideprotectedfunctiondrawRowBackground(s:Sprite,rowIndex:int,y:Number,height:Number,color:uint,dataIndex:int):void  {  if(this.rowColorFunction!=null){  if(dataIndex<this.dataProvider.length){  varitem:Object=this.dataProvider.getItemAt(dataIndex);  color=this.rowColorFunction.call(this,item,color);  }  }  super.drawRowBackground(s,rowIndex,y,height,color,dataIndex);  }  }  }

在具体使用过程中可以这样调用:

<cwmlab:CustomRowColorFlex DataGriddataProvider="{dp}"  rowColorFunction="setCustomColor"> privatefunctionsetCustomColor(item:Object,color:uint):uint  {  if(item['col3']>=2000)  {  return0xFF0033;  }  returncolor;  }

2.设置Flex DataGrid列的背景色

这个很简单,只要设置Flex DataGridColumn的属性backgroundColor="0x0000CC"即可。

3.设置Flex DataGrid单元格(cell)的背景色

这个主要通过itemRenderer进行设置,itemRenderer可以是Label,也可以是其他如Flex DataGridItemRenderer。

先看看用Label如何设置背景色

<mx:Flex DataGridColumnheaderText="Make"dataField="col1"> <mx:itemRenderer> <mx:Component> <mx:Label><!--usinglabelasitemRenderer--> <mx:Script><![CDATA[  overridepublicfunctionsetdata(value:Object):void  {  super.data=value;  if(value.col1=='Toyota'){  this.opaqueBackground=0xCC0000;  }  }  ]]></mx:Script> </mx:Label> </mx:Component> </mx:itemRenderer> </mx:Flex DataGridColumn>

用Flex DataGridItemRenderer进行背景色设置如下:

<mx:Flex DataGridColumnheaderText="Year"dataField="col3"> <mx:itemRenderer> <mx:Component> <mx:Flex DataGridItemRenderer><!--usingFlex DataGridItemRendererasitemRenderer--> <mx:Script><![CDATA[  overridepublicfunctionsetdata(value:Object):void  {  super.data=value;  if(value.col3>=2000){  this.background=true;  this.backgroundColor=0x00cc00;  }  }  ]]></mx:Script> </mx:Flex DataGridItemRenderer> </mx:Component> </mx:itemRenderer> </mx:Flex DataGridColumn>

以上是“Flex DataGrid背景色如何调试”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI