如何更改jqgrid自定义格式化程序中单元格的背景颜色?
我可以通过在jqgrid自定义格式化程序中执行此操作来更改文本颜色:
function YNFormatter(cellvalue, options, rowObject) { var color = (cellvalue == "Y") ? "green" : "red"; var cellHtml = "" + cellvalue + ""; return cellHtml; }
但我想现在改变整个单元格的背景颜色 (而不是文本颜色)。
这可能吗?
如果要在自定义单元格格式器中使用元素,可以从自定义格式化程序返回
return '' + cellvalue + '';
你可以在其中定义span.cellWithoutBackground
的样式,例如下面的内容
span.cellWithoutBackground { display:block; background-image:none; margin-right:-2px; margin-left:-2px; height:14px; padding:4px; }
它是如何工作的你可以在这里看到:
更新:答案是旧的。 最佳实践是在colModel
使用cellattr
回调而不是使用自定义格式化程序。 更改单元格的背景颜色通常只是将style
或class
属性分配给列的单元格(
元素)。 colModel
列中定义的cellattr
回调允许完全执行此操作。 仍然可以使用预定义的格式化程序,如formatter: "checkbox"
, formatter: "currency"
, formatter: "date"
等,但仍然会更改列中的背景颜色。 以同样的方式, rowattr
回调(可以定义为jqGrid选项(在colModel
的特定列之外))允许分配整行的样式/类(
元素)。
例如,有关cellattr
更多信息可以在这里和这里找到。 另一个答案解释了rowattr
。
这是我做的:
jQuery("#grid_id").jqGrid({ ... colModel: [ ... {name:'price', index:'price', width:60, align:"center", editable: true, formatter:myFmatter}, ... ], afterInsertRow: function(rowId, data) { $("#grid_id").setCell(rowId, 'price', '', {'background-color':'#' + data.colorHEX}); } ... });
这里
$("#cell").setCell(Row , Column, Value, { background: '#888888'});
实际上你甚至不需要自定义格式化程序,如果你打算用它来设置颜色。 你甚至可以从这里设置颜色值,比如
var color = (Value == "Y") ? "green" : "red"; $("#cell").setCell(Row , Column, Value, { background: '#888888', color: color});
快乐的编码。