9

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

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

    return cellHtml;
 }

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

这可能吗?

4

3 回答 3

20

如果您想<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;
}

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

更新:答案是旧的。最佳实践是使用cellattr回调colModel而不是使用自定义格式化程序。更改单元格的背景颜色通常只是分配styleclass属性给列(<td>元素)的单元格。cellattr列中定义的回调colModel正好允许这样做。仍然可以使用预定义的格式化程序,例如formatter: "checkbox"、等,但仍然可以更改列中的背景颜色。以同样的方式,可以定义为 jqGrid 选项(在特定列之外)的回调允许分配整行(元素)的样式/类。formatter: "currency"formatter: "date"rowattrcolModel<tr>

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

于 2011-02-12T23:43:12.730 回答
1

这是我所做的:

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});
        }
...
});
于 2011-01-01T19:44:34.990 回答
0

这里

$("#cell").setCell(Row , Column, Value, { background: '#888888'});

实际上,如果您只是打算设置颜色,您甚至不需要自定义格式化程序。您甚至可以从这里设置颜色值,例如,

var color = (Value == "Y") ? "green" : "red";
$("#cell").setCell(Row , Column, Value, { background: '#888888', color: color});

快乐编码。

于 2010-07-14T09:41:08.770 回答