溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Flex DataGrid背景色如何調(diào)試

發(fā)布時間:2021-12-04 16:21:16 來源:億速云 閱讀:225 作者:小新 欄目:編程語言

這篇文章主要為大家展示了“Flex DataGrid背景色如何調(diào)試”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學習一下“Flex DataGrid背景色如何調(diào)試”這篇文章吧。

Flex DataGrid背景顏色調(diào)試

在Flex運用中經(jīng)常提到的有關(guān)Flex DataGrid問題是如何改變Flex DataGrid單元格(cell),列(column)和行(row)的背景顏色(backgroundcolor)這里對這3種顏色做一個總結(jié)。

1.設(shè)置行(row)的背景色

主要是通過對Flex DataGrid擴展,對protected函數(shù)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);  }  }

這段代碼中根據(jù)Flex DataGrid的數(shù)據(jù)源進行判斷來設(shè)置背景色,但是它有個缺陷,就是這個具體的背景色我們無法自己靈活指定。因此派生出新的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);  }  }  }

在具體使用過程中可以這樣調(diào)用:

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

2.設(shè)置Flex DataGrid列的背景色

這個很簡單,只要設(shè)置Flex DataGridColumn的屬性backgroundColor="0x0000CC"即可。

3.設(shè)置Flex DataGrid單元格(cell)的背景色

這個主要通過itemRenderer進行設(shè)置,itemRenderer可以是Label,也可以是其他如Flex DataGridItemRenderer。

先看看用Label如何設(shè)置背景色

<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進行背景色設(shè)置如下:

<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背景色如何調(diào)試”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學習更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI