2014-02-08 59 views
1

我已經成功地繪製條件語句正常網格列網格TemplateColumn中渲染條件語句[ExtJS的4.2.1]

{ 
     header: '&nbsp', 
     dataIndex: 'status_b2', 
     menuDisabled: true, 
     flex: 1, 
     sortable: false, 
     renderer : function(value, meta) { 
      var status = value.split("<br/>")[0]; 

      if (status == "Unset Price"){ 
       meta.style = "background-color:pink;"; 
      } 
      else if (status == "Available"){ 
       meta.style = "background-color:green;"; 
      }else if (status == "Booked Unpaid"){ 
       meta.style = "background-color:yellow;"; 
      }else if (status == "Booked Paid"){ 
       meta.style = "background-color:orange;"; 
      }else if (status == "Checked In"){ 
       meta.style = "background-color:red;"; 
      }else if (status == "Checked Out"){ 
       meta.style = "background-color:purple;"; 
      } 
      return value; 
} 

我的問題是如何與TemplateColumn中電網條件邏輯呈現?如果room_status ==「髒」,我想添加背景色爲紅色。

{ 
      text: 'Room List', 
      xtype: 'templatecolumn', 
      tpl: 'ROOM {room_number} <br/> {room_type_name} <br/> {bed_type} | {room_status}', 
      menuDisabled: true, 
      flex: 1, 
      sortable: false 
} 

回答

0

我也習慣使用渲染器向單元格添加樣式以使它們突出顯示。實際上,templatecolumn已經有一個默認應用的渲染器,它基本上返回應用到記錄的模板。因此,如果您想使用自己的渲染器,則可以從defaultRenderer複製兩行代碼,或直接調用列的defaultRenderer:

function customRenderer(value, metaData, record, rowIndex, colIndex, store, view) 
{ 
    if (record.get('severity') == 'critical') 
    { 
    metaData.tdCls += ' redHighlight'; 
    } 
    return view.panel.columns[colIndex].defaultRenderer(value, metaData, record); 
};