如何更改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回调而不是使用自定义格式化程序。 更改单元格的背景颜色通常只是将styleclass属性分配给列的单元格(

元素)。 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}); 

快乐的编码。