2010-03-07 48 views
2

看起來好像有各種各樣的黑客來改變數據網格的行的背景顏色,但所有這些似乎都發生在渲染時間。如何動態更改datagrid行的背景顏色?

參見:Setting background color for datagrid row in Adobe Flex

我有一個DataGrid,我需要經常基於更改綁定的ArrayCollection來改變行的顏色爲紅色,然後恢復正常。所以我正在尋找一種動態改變行顏色的方法。

任何人都可以幫忙嗎?顯然,隨着變化頻繁發生,如果改變行的背景顏色不是一個昂貴的過程,但是乞丐的不能是選擇器,這將是很好的。

+0

houser2112的答覆工作,但你最好的選擇是使用的itemRenderer(類似於houser寫的類),但是要在setter數據上更改該類的顯示屬性。 – 2010-03-08 18:36:15

回答

2

您必須編寫一個自定義組件,我將包含來自我們項目的清理過的代碼。某處在您的ActionScript,你需要寫的每一列:

column.itemRenderer = new ClassFactory(CellRenderer); 

這裏的自定義類:

public class CellRenderer extends Label { 
    override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void { 
     super.updateDisplayList(unscaledWidth, unscaledHeight); 
     var g:Graphics = graphics; 
     g.clear(); 
     for each(var object:Object in arrayCollection) { 
      if (object.rowIndex == 0) { //or whatever your conditions are 
       g.beginFill(0xFFFFC0); 
       g.drawRect(0, 0, unscaledWidth, unscaledHeight); 
       g.endFill(); 
      } 
     } 
    } 
} 
相關問題