【问题标题】:How Can I Conditionally Color DataGrid Row Text Using an ItemRenderer in Flex 3如何在 Flex 3 中使用 ItemRenderer 有条件地为 DataGrid 行文本着色
【发布时间】:2011-10-29 23:25:58
【问题描述】:

我有一个关于在 Flex 3 DataGrid 中为行着色的问题。我想将“基本”和“低于基本”行中的所有内容设为红色:

<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)}       



        }
     }
  }

}

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

简而言之,我想让整个“Below”和“Below Basic”行显示为红色。有什么建议吗?

【问题讨论】:

    标签: actionscript-3 apache-flex datagrid row flex3


    【解决方案1】:

    如果您知道要比较的数据项始终是“指标”,则显式引用该数据项,因此无论您呈现哪一列,您的条件逻辑始终应用于“指标”,从而导致所有列根据该数据项的值着色。

    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);
      }
    }
    

    【讨论】:

      猜你喜欢
      • 2011-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-04
      • 2012-01-21
      • 2021-07-16
      • 2013-03-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多