我想根据其中包含的文本更改单个单元格的颜色。单元格将是一个状态,因此可以是新的,已发送的或已分配的。问题是该文本值是可翻译的,因此格式化程序(如下面的代码)将无法正常工作。
function StatusColourFormatter(cellValue, options, rowObject){
if(cellValue === 'NULL' || cellValue === 'undefined' || cellValue === 'null' || cellValue === null || cellValue === ' ' || cellValue == ' '){
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
}
}
所以我想做的是有一个隐藏的列,其值始终是英文,但后来我想改变保存翻译值的单元格的颜色。这是可能的,我将如何做到这一点?
答案 0 :(得分:1)
可以通过在单元格上设置class
或style
属性(在<td>
上)来更改单元格文本的颜色或背景颜色。 jqGrid有cellattr
回调,这有助于此。了解自定义格式化程序的目标是构建单元格内容而不是单元属性,这一点非常重要。要更改单元属性,应使用cellattr
。
因此,我建议您根据单元格的内容分配不同的class
属性
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
参数添加到cellValue
并使用item
或{{ 1}}对象。在大多数情况下,选择rawObject
参数并将列名作为属性将是免费jqGrid的最佳选择。
此外,应该定义CSS规则,它使用类并设置item
或color
,例如如下
background-color