jqgrid自定义格式化程序也应用于摘要

时间:2016-05-01 12:32:37

标签: jqgrid

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

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

1)在上面的示例中,我只希望值为20和25的单元格为红色(如果它们分别高于40),但分组的单元格45也显示为红色。我希望分组的单元格为红色只有当它高于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功能。这似乎不起作用。帮助赞赏。

1 个答案:

答案 0 :(得分:0)

我建议您删除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'";
    }
}

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

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