jqGrid - 有条件地格式化基于关闭日期值的单元格

时间:2013-11-15 16:58:25

标签: jquery jqgrid jqgrid-asp.net

我已经看到有关条件格式的大量信息,但似乎无法使其工作。我希望当它的值(这是一个日期)过去时,将单元格的字体设置为红色。

这是我现在所拥有的一般概念:

{
              name: 'IsoDate', index: 'IsoDate', align: 'left', sorttype: 'date', datefmt: "m/d/Y",
              formatter: function (cellvalue, options, rowobject) { var now = new Date(); if (cellvalue < now) { return '<span class="error">' + cellvalue + '</span>'; } else { cellvalue; } }
          }

我似乎无法让它工作。我已经得到它来返回所有红色值或所有未定义的值。有些领域还没有日期。

我很感激任何帮助!谢谢!

更新:

这是我使用的代码,最终正在运行。我实际上是在引用日期的另一列。

cellattr: function (rowid, val, rawObject, cm, rdata) {
                  var idate = new Date(rawObject['IsoDate']);
                  return (idate < new Date()) ? ' class = "ui-state-error-text"' : ' class = "field-validation-green"';
              }

2 个答案:

答案 0 :(得分:5)

最好使用cellattr代替custom formatter。如果您仍然可以使用formatter: "date" style,只需在所选的class单元格上设置其他<td>ui-state-error-text属性。例如,类{ name: "IsoDate", sorttype: "date", formatter: "date", formatoptions: {newformat: "m/d/Y"}, cellattr: function (cellvalue) { return (cellvalue < new Date()) ? ' class="ui-state-error-text"' : ''; } } 似乎是我选择将单元格的字体设置为红色的好选择。所以列的定义可以是

cellvalue

我不确定您输入哪些数据以及您发布的代码是否正常工作。如果需要,您可以将上述代码更改为与您拥有的cellattr格式相对应。

有关使用情况{{1}}的更多示例,请参阅predefined formatterthe answerthis one以及其他许多内容。

答案 1 :(得分:0)

您在条件语句中缺少return关键字。这就是为什么你只看到“红色”的价值。

使用:

else { return cellvalue; }

而不是:

else { cellvalue; }