2012-12-23 160 views
1

我在我的應用程序中顯示日期的網格。現在,如果這一天在上週,我想以粗體格式顯示該字段。但在兩行顯示我想要的輸出。我不明白我的病情在哪裏。有人可以幫我嗎?這裏是我下面的代碼:Extjs有條件的日期渲染器

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

回答

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

+0

這是比@Sumon Bappi的更好的解決方案。 +1 – lontivero