Extjs条件日期渲染器

时间:2012-12-23 04:53:51

标签: extjs extjs4 extjs-mvc

我的应用程序中有一个网格,它在字段中显示日期。现在我想以粗体格式显示该字段,如果这一天是在上周。但在两行显示我想要的输出。我不明白我的病情在哪里。请问有人帮我吗?这是我的代码:

{
            text: 'Start',  
            dataIndex: 'weekstart',
            flex: 1,
            renderer: function(value, metaData){
                var day = new Date(value) - 0,
                lastDay = Ext.Date.getLastDateOfMonth(value)-0,
                lastWeek = lastDay - 7;
                console.log('day >>> '+day,'lastDay >>> '+ lastDay, 'lastWeek >>> '+lastWeek);
                    return day >= lastWeek ? '<b>' + Ext.Date.format(value, 'M d, Y') + '</b>' : Ext.Date.format(value, 'M d, Y') ;
            }
        }

2 个答案:

答案 0 :(得分:3)

您的daylastDay是时间戳,为此,您应该使用lastWeek中的时间戳:lastWeek = lastDay - 7*24*3600*1000

无论如何,IMO最好使用getRowClass格式化值。 在网格配置中尝试指定viewConfig

viewConfig: {
    getRowClass: function(record, rowIndex, rowParams, store){
        var value = record.get('lastChange'),
            day = value.getDate(),
            lastDay = Ext.Date.getDaysInMonth(value),
            lastWeek = lastDay - 6;
        return day >= lastWeek ? 'last-week' : '';
    }
}

在列定义中指定类附加类:tdCls: 'date-column'然后您可以在css中格式化列:

.last-week .date-column {
    font-weight: bold;
}​

工作样本:http://jsfiddle.net/36n4m/1/

答案 1 :(得分:0)

您好我已完成如下:

 {
                text: 'Start',  
                dataIndex: 'weekstart',
                width: 84,
                renderer: function(value, metaData, record, row, col, store, gridView){
                    var day = value.getDate(),
                    lastDay = Ext.Date.getDaysInMonth(value),
                    lastWeek = lastDay - 6;
//                    console.log( 'row >>> '+ row,'   day >>> '+ day,'   lastDay >>> '+ lastDay, '   lastWeek >>> '+ lastWeek );
                        return day >= lastWeek ? '<b>' + Ext.Date.format(value, 'M d, Y') + '</b>' : Ext.Date.format(value, 'M d, Y') ;
                }
            }