2014-02-17 70 views
6

我有我的网格加载数据列表,有些数据应该根据特定的日期值更改背景值。如果日期小于当天的日期,则应该使用'now'的css类,否则'later'。 它确实工作正常,但我的问题是只有一行正在改变背景颜色,所以它不通过整个列表。在extjs中动态改变网格行的背景颜色4.2.2

我的继承人格:

grid = Ext.create('Ext.grid.Panel', { 
       store: store, 
       xtype: 'gridpanel', 
       columns: [ 
        { text: 'Name', dataIndex: 'name', tdCls: 'x-grid-cell' } 
       ], 
       stripeRows: false, 
       viewConfig: { 
        getRowClass: function(record, index) { 

        var date = Ext.Date.parse(record.get('reminderDate'),"c").valueOf(); 
        var today = Ext.Date.parse(Ext.Date.format(new Date(), 'Y-m-d'), "c").valueOf(); 

        return today < date ? 'later' : 'now' 

       }      
      }, 
      renderTo: Ext.getBody() 
     }); 

编辑:

的backgroudn颜色只在网格中的顶行改变,其余保持不变。然而,getrowclass调用每一行。

CSS:

.later .x-grid-cell { 
     background-color: #FFB0C4; 
    } 
.now .x-grid-cell { 
     background-color: #5491BD; 
    } 
+0

你说'getRowClass'不要求每一行,或者说每一行的背景颜色是不会改变? –

+0

它被称为每一行。每行的bg颜色不会发生变化 – Paparis

+0

然后,这可能是您的CSS问题。 –

回答

4

想通了什么问题。

因为我使用的是主题,所以必须将自定义CSS文件放在带有“!important”标志的标准ExtJS CSS之前。

新的CSS文件:

.later .x-grid-cell { 
     background-color: #FFB0C4 !important; 
    } 
.now .x-grid-cell { 
     background-color: #5491BD !important; 
    }