我正在使用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功能。这似乎不起作用。帮助赞赏。
答案 0 :(得分:0)
我建议您删除formatter
和unformatter
回调,并在列中使用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;
}