如(rú)何更改DataGrid中某一行的背景色是一個被經常問(wèn)的問(wèn)題。這個在Flex2.0中很簡單,隻需按照(zhào)下面的步驟做:
1.創建一個擴展自(zì) mx.controls.DataGrid 的類。這個類可(kě)以是MXML文件(jiàn)或者ActionScript文件(jiàn),你(nǐ)可(kě)以根據自(zì)己的習慣創建。
2.覆寫 protected 方法
drawRowBackground : override protected function drawRowBackground(s:Sprite, rowIndex:int, y:Number,height:Number, color:uint, dataIndex:int):void {// 這裡(lǐ)可(kě)以做一些對數據的判斷,然後更改相(xiàng)應的顔色。比如(rú)color = 0xFF0000; // 調用super函數來(lái)執行更改。 super.drawRowBackground(s,rowIndex,y,height,color,dataIndex);}
3.在你(nǐ)的程序中用你(nǐ)新建的類替代 <mx:DataGrid>。
在 drawRowBackground 方法中你(nǐ)可(kě)以對數據做一些判斷。dataIndex 參數可(kě)以用來(lái)查看(kàn)dataProvider 中某一行所顯示的數據。例如(rú):假設你(nǐ)想要的數值大(dà)于1000的行都(dōu)顯示爲綠色:
var item:Object = (dataProvider as ArrayCollection).getItemAt(dataIndex);if( item.quantity > 1000 ) color = 0×00FF00;
就(jiù)這麽簡單。