jqgrid 自定义格式化程序也已申请摘要

jqgrid custom formatter getting applied for summary also

我正在使用 jqGrid v5.0.2 来实现自定义格式化程序。我在列中启用了摘要。如果列值大于 40,我想以红色显示文本。我已经针对我的问题实施了 Oleg 的解决方案。格式有效,但它 也被应用到摘要行 。例如:

Resource    Week1
--------    -----
Mr.X         45
  -Task1     25
  -Task2     20

1) 在上面的例子中,我只希望值为 20 和 25 的单元格是红色的(如果它们分别大于 40),但是分组的单元格 45 也显示在 red.I 中想要分组仅当高于 80(40+40) 时,单元格才为红色。关于如何实现我想要的结果有什么建议吗?

我的代码:

{
            name: "FirstWeek",
            editable: true,
            sortable: false,
            formatter: function (cellvalue) {
                var color;
                var val = Number(cellvalue);
                if (val > 40) {
                    color = 'red';
                }
                var cellHtml = "<span style='color:" + color + "' originalValue='" +
                             val + "'>" + val + "</span>";
                return cellHtml;
            },

            unformatter: function(cellValue, options, cellObject) {
                    return $(cellObject.html()).attr("originalValue");
                },

                summaryTpl: "<b>{0}</b>",
                summaryType: "sum",
                editrules: { number: true, minValue: 0, maxValue: 40 }
            }

2) 在内联编辑自定义格式的单元格时,我在单元格 (UI) 中得到 <span class="cellWithoutBackground" style="color:undefined;">25</span> 。我已经使用了 unformatter 函数 also.That 似乎不起作用。帮助表示赞赏。

我建议您删除 formatterunformatter 回调并在列中使用 cellattr 回调。它可以这样定义:

cellattr: function(rowId, val, rawObject) {
    if (Number(val) > 40) {
        return " style='color: red'";
    }
}

或类似

cellattr: function(rowId, val, rawObject) {
    if (Number(val) > 40) {
        return " class='my-text-color'";
    }
}

在列的特定单元格(<td> 元素)上设置 class my-text-color。如果您使用 class 属性,那么您应该定义额外的 CSS 规则,例如

.my-text-color {
    color: red;
}