如何更改jqgrid自定义格式化程序中单元格的背景颜色?

leo*_*ora 9 jquery formatter jqgrid

我可以通过在jqgrid自定义格式化程序中执行此操作来更改文本颜色:

function YNFormatter(cellvalue, options, rowObject)
{
    var color = (cellvalue == "Y") ? "green" : "red";
    var cellHtml = "<span style='color:" + color + "' originalValue='" +
                                cellvalue + "'>" + cellvalue + "</span>";

    return cellHtml;
 }
Run Code Online (Sandbox Code Playgroud)

但我想现在改变整个单元格背景颜色(而不是文本颜色).

这可能吗?

Ole*_*leg 20

如果要<span>在自定义单元格格式器中使用元素,可以从自定义格式化程序返回

return '<span class="cellWithoutBackground" style="background-color:' +
       color + ';">' + cellvalue + '</span>';
Run Code Online (Sandbox Code Playgroud)

span.cellWithoutBackground您可以定义的样式,例如以下内容

span.cellWithoutBackground
{
    display:block;
    background-image:none;
    margin-right:-2px;
    margin-left:-2px;
    height:14px;
    padding:4px;
}
Run Code Online (Sandbox Code Playgroud)

它是如何工作的你可以在这里看到: 在此输入图像描述

更新:答案是旧的.最佳做法是使用cellattr回调colModel而不是使用自定义格式化程序.改变单元格的背景颜色通常只是为列(元素)的单元格分配styleclass属性<td>.cellattr列中定义的回调colModel允许完全执行此操作.一个仍然可以使用预定义的格式化formatter: "checkbox",formatter: "currency",formatter: "date"等等,但依然改变在列的背景颜色.以同样的方式,rowattr回调(可以定义为jqGrid选项(在特定列的外部colModel))允许分配整行(<tr>元素)的样式/类.

例如,cellattr可以在此处此处找到有关的更多信息.另一个答案解释rowattr.