2011-03-01 90 views
1

我想基于cfgrid中的状态条件更改单元格的颜色。根据数据更改cfgrid(html)单元格颜色

例如:

  1. 如果记录的状态为过期,该小区将变为红色粗体姗姗来迟。
  2. 如果记录的状态为“到期”(30天内),则单元格将变为黄色并带有粗体显示。
  3. 如果记录的状态为当前(由于日期超过30天),那么细胞将是绿色与当前以粗体....

我只能找到渲染cfgridrow和CFGRIDCOLUMN。

回答

3

您应该使用ExtJS提供的列渲染器属性。一个列的渲染器获取三个参数,第二个是一个元对象,您可以在其中设置一个名为attr的属性,该属性被设置为单元格dom元素上的属性。您可以为例如电池的一些CSS样式:在Ext.grid.ColumnModel documentation

+0

+1谢谢。 为了将来的参考,您可以像这样获得列模型: 'var ruleGrid = ColdFusion.Grid.getGridObject('ruleGrid'); ruleGrid.colModel.setRenderer(6,function(value,meta,record){...});' – Wernsey 2011-09-06 11:05:47

0

var renderer = function(value, meta, record){ 
    if(value == "Overdue") { meta.attr = 'style="color:red;font-weight:bold"'; } 
    if(value == "Due") { meta.attr = 'style="color:yellow;font-weight:bold"'; } 
    if(value == "Current") { meta.attr = 'style="color:green"'; } 
    return value; 
} 

检查setRenderer我使用类似的东西,你需要列在网格中显示截止日期:

{ 
header: 'Expiration Date',  
dataIndex: 'ExpireDate', 
renderer: function (value, metaData, record, rowIndex, colIndex, store) { 

    if (record.get ('ExpireDate') < new Date ().clearTime ()) { 
     metaData.css += ' y-grid3-expired-cell'; 
     value = '';  
    } 
    if (record.get ('ExpireDate').format ('m/d/Y') == '12/31/9999') { 
     metaData.css += ' y-grid3-non-expired-cell'; 
     value = ''; 
    }   
    value = (value == '') ? '' : record.get ('ExpireDate').format ('m/d/Y'); 
    }  
    return value;  
} 

}, 
使用css类的

是更健壮的解决方案,我的定义如下定义:

.y-grid3-expired-cell { 
    background:   #AA0000; 
} 

.y-grid3-non-expired-cell { 
background:   #00AA00; 
} 

只有你需要做的是添加自己的逻辑和风格...

相关问题