2015-12-02 47 views
0

我想根據其中包含的文本更改單個單元格的顏色。該單元格將是一個狀態,所以無論是新建,發送還是分配。問題是這個文本值是可翻譯的,所以像下面的代碼這樣的格式化程序將無法正常工作。jqGrid rowformatter基於單獨的單元格值

function StatusColourFormatter(cellValue, options, rowObject){ 
    if(cellValue === 'NULL' || cellValue === 'undefined' || cellValue === 'null' || cellValue === null || cellValue === ' ' || cellValue == '&nbsp'){ 
     cellValue = ''; 
     return cellValue; 
    } 
    if(cellValue == "New"){ 
     rowsNew[rowsNew.length] = options.rowId; 
     return cellValue; 
     } 

    if(cellValue == "Sent"){ 
     rowsSent[rowsSent.length] = options.rowId; 
     return cellValue 
     } 
    if(cellValue =="Assigned"){ 
     rowsAssigned[rowsAssigned.length] = options.rowId; 
     return cellValue 
    } 
} 

所以我想要做的是有一個隱藏的列是該值始終用英文,但後來我想改變保存翻譯值單元格的顏色。這是可能的,我該如何去做這件事?

回答

1

通過在單元上設置classstyle屬性(在<td>上),可以更改單元格文本的顏色或背景顏色。 jqGrid有cellattr回調,這有助於這裏。重要的是要明白,自定義格式化程序的目標是構建單元格內容而不是單元格屬性。要更改單元格屬性,應使用cellattr

因此,我建議你根據該小區的

cellattr: function (rowId, cellValue) { //, rawObject, cm, item) { 
    switch (cellValue) { 
     case "New": 
      return "class='new_color'"; 
      break; 
     case "Sent": 
      return "class='sent_color'"; 
      break; 
     case "Assigned": 
      return "class='assigned_color'"; 
      break; 
    } 
} 

要設置基於另一個項目(不是當前cellValue)的內容的價值應該加上rawObject, cm, item參數的內容分配不同class屬性cellValue並使用itemrawObject對象。在大多數情況下,選擇item參數並將列名稱作爲屬性是免費jqGrid的最佳選擇。

另外一個應該定義CSS規則,它使用的類和設置例如colorbackground-color如以下

.new_color { 
    background-color: green; 
} 
.sent_color { 
    background-color: yellow; 
} 
.assigned_color { 
    background-color: red; 
} 
.new_color, .sent_color, .assigned_color { 
    background-image: none; 
}