我可以通过在jqgrid自定义格式化程序中更改文本颜色:
function YNFormatter(cellvalue,options,rowObject) { var color = (cellvalue == "Y") ? "green" : "red"; var cellHtml = "<span style='color:" + color + "' originalValue='" + cellvalue + "'>" + cellvalue + "</span>"; return cellHtml; }
但是我想现在更改整个单元格的背景颜色(而不是文本颜色).
这可能吗?
解决方法
如果您想使用< span>元素内部的自定义单元格式化程序,您可以从自定义格式化程序返回
return '<span class="cellWithoutBackground" style="background-color:' + color + ';">' + cellvalue + '</span>';
您可以在其中定义span.cellWithoutBackground的样式,例如如下所示
span.cellWithoutBackground { display:block; background-image:none; margin-right:-2px; margin-left:-2px; height:14px; padding:4px; }
工作原理你可以看到现场here:
UPDATED:答案是老的最好的做法是在colModel中使用cellattr回调,而不是使用自定义格式化程序.更改单元格的背景颜色通常只是将样式或类属性分配给列的单元格(< td>元素).在colModel列中定义的cellattr回调允许完全这样做.还可以使用格式化程序,如格式化程序:“checkBox”,格式化程序:“货币”,格式化程序“日期”等,但是仍然会更改列中的背景颜色.以同样的方式,可以定义为jqGrid选项(colModel的特定列之外)的rowattr回调允许分配整行(< tr>元素)的样式/类.
例如,有关cellattr的更多信息可以在here和here找到. Another answer解释了rowattr.