2011-08-18 18 views
0

使用的ItemRenderer的我有一个关于在Flex 3 DataGrid的着色行的问题。我想,让一切在“基本”和“低于基础”行红:我怎样才能有条件颜色DataGrid行文字中的Flex 3

<mx:DataGrid id="myGrid" 
    width="450" 
    dataProvider="{initDG}" 
    showHeaders="false"> 

    <mx:columns> 
    <mx:DataGridColumn dataField="Indicator" itemRenderer="com.dcscore.ColorCells2"/> 
    <mx:DataGridColumn id="schoolColumn" dataField="Result" fontWeight="bold" itemRenderer="com.dcscore.ColorCells2"/> 
    </mx:columns> 
</mx:DataGrid> 

我的ItemRenderer是:

package com.mySite { 

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

    public class ColorCells2 extends Label { 
     override public function set data(value:Object):void 
    { 
     if(value != null) 
     { 
      super.data = value; 

       if(value[DataGridListData(listData).dataField] == "Basic:"){ 
        setStyle("color", 0xFF0000)} 

       if(value[DataGridListData(listData).dataField] == "Below Basic:"){ 
        setStyle("color", 0xFF0000)}  



     } 
    } 
    } 

} 

我可以得到“基本”和“低于基础”来在指标栏中显示为红色。但是,如何获得“结果”列中的相应值显示为红色。我不知道如何引用这些单元格。

总之,我想使整个“下面”和“低于基础”行显示为红色。有什么建议么?

回答

0

如果你知道你是比较根据数据项始终是“指标”,那么引用数据项明确,所以无论哪个列要渲染你的条件逻辑总是适用于“指标”,造成所有列根据该数据项的值进行着色。

override public function set data(value:Object):void 
{ 
    if(value != null) 
    { 
    super.data = value; 

    if(value["Indicator"] == "Basic:") 
     setStyle("color", 0xFF0000); 

    if(value["Indicator"] == "Below Basic:") 
     setStyle("color", 0xFF0000); 
    } 
}