2009-11-12 86 views

回答

10

使用alternatingItemColors風格。您可以在陣列中指定任意數量的顏色。

<mx:DataGrid id="dg" alternatingItemColors="[#449933, #994433]" 
    dataProvider="{[{d:'ASD', c:'$#'},{d:'WER', c:'^@'},{d:'VCB', c:'*!'}]}"> 
    <mx:columns> 
     <mx:DataGridColumn dataField="d"/> 
     <mx:DataGridColumn dataField="c"/> 
    </mx:columns> 
</mx:DataGrid> 

style只有當沒有指定backgroundColor效果。

+1

原諒我的色彩感:( – Amarghosh 2009-11-12 06:09:36

+0

大..謝謝你..我離開了那個工作,事情我需要編寫一些自定義項目渲染它..這是更容易..謝謝:-)你的顏色感並不是太糟糕;-) – Angeline 2009-11-14 07:32:43

1

另一種方法是使用DataItemBound(Object, DataGridItemEventArgs)事件處理程序。

在此事件簽名的對象是數據網格控制,所以重鑄它並使用.DataGrid.Items.Count模2以獲得用於當.DataGridItemEventArgs.Item是備用行的參考。然後,我爲替代者創建了一個css樣式,並將.DataGridItemEventArgs.Item.CssClass更改爲新創建的樣式。

該方法的優點是可以在此之後進行其他行顏色操作以進行突出顯示;上面的alternateItemColor解決方案將始終是渲染前的最後一次css更改,可能會覆蓋其他突出顯示。

2

我用的itemRenderer到的DataGridColumn

<mx:DataGrid> 
    <mx:columns> 
     <mx:DataGridColumn dataField="A" itemRenderer="com.shels.table.MarkObject"/> 
     <mx:DataGridColumn dataField="B" /> 
    </mx:columns> 
</mx:DataGrid> 
package com.shels.table { 

import flash.display.Graphics; 
import flash.geom.Matrix; 

import mx.controls.Label; 
import mx.controls.dataGridClasses.*; 

public class MarkObject extends Label { 

    override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void { 
     super.updateDisplayList(unscaledWidth, unscaledHeight); 

     var g:Graphics = graphics; 
     g.clear(); 

     var dField:String = DataGridListData(listData).dataField; 
     var f:int = DataGridListData(listData).columnIndex; 

     var c:int = 0xFFFFFF; 

     // c = parseInt(data[ "color"]); 
     // You can to use field values from record. 

     g.beginFill(c); 
     g.drawRect(0, 0, unscaledWidth, unscaledHeight); 

     g.endFill(); 
    } 
} 
相關問題