2011-09-25 68 views
1

我有一個包含數字的數據網格列。我該怎麼辦:添加%符號併爲其着色

1. add a '%' sign at the end of each number in the column 

2. make the color either red or green depending on if the number is less than or greater than 0, respectively. 

我已經能夠做到1或者其他不能同時採用。這裏是我有#2,但不是#1:

// my datagrid column: 
<mx:AdvancedDataGridColumn dataField="change" itemRenderer="itemrenderers.ColorRenderer" /> 

// my item renderer: 
package itemrenderers 
{ 
import mx.controls.Label; 
import mx.controls.dataGridClasses.DataGridListData; 
public class ColorRenderer extends Label { 
    override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void 
    { 
     super.updateDisplayList(unscaledWidth, unscaledHeight); 
     if (data && data[DataGridListData(listData).dataField] < 0) 
     { 
      setStyle("color", 0xA41330); //red 
     } 
     else 
     { 
      setStyle("color", 0x59A336); //green 
     } 
    } 
} 
} 

回答

1

如果您的代碼正確着色標籤,這應該工作。

// my datagrid column: 
<mx:AdvancedDataGridColumn dataField="change" itemRenderer="itemrenderers.ColorRenderer" /> 

// my item renderer: 
package itemrenderers 
{ 
import mx.controls.Label; 
import mx.controls.dataGridClasses.DataGridListData; 
public class ColorRenderer extends Label { 
    override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void 
    { 
     super.updateDisplayList(unscaledWidth, unscaledHeight); 
     if (data && data[DataGridListData(listData).dataField] < 0) 
     { 
      setStyle("color", 0xA41330); //red 
     } 
     else 
     { 
      setStyle("color", 0x59A336); //green 
     } 
     text = (data[DataGridListData(listData).dataField] as String) + "%"; 
    } 
} 
} 
1

試着把這個方法放在你的項目渲染器類中。它應該滿足您的要求:

override public function set data(value:Object):void { 
    super.data = value; 
    if (value) { 
     var fieldValue:Number = 
      value[DataGridListData(listData).dataField] as Number; 
     text = String(fieldValue) + "%"; 
     if (fieldValue < 0){ 
      setStyle("color", 0xA41330); //red 
     }else{ 
      setStyle("color", 0x59A336); //green 
     } 
    } 
} 

問候。

+0

謝謝,但將所有值更改爲'0%',並使它們全部爲綠色 –

+0

這是因爲我忘記提及您應該從項目渲染器類中移除'updateDisplayList'方法。 – 2DH

0

使用datagrid列stylefunction和labelfunction。使用stylefunction可以切換顏色並使用labelfunction,您可以爲數據添加%字符。