2015-12-02 50 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; 
}