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

mrs*_*nce 1 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; } }
          }
Run Code Online (Sandbox Code Playgroud)

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

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

更新:

这是我使用的代码,最终工作.我实际上是在引用日期的另一列.

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"';
              }
Run Code Online (Sandbox Code Playgroud)

Ole*_*leg 5

最好使用cellattr而不是自定义格式化程序.在这种情况下,你仍然可以使用预定义的格式一样formatter: "date",只是设置附加styleclass所选择的属性<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"' : '';
    }
}
Run Code Online (Sandbox Code Playgroud)

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

请参阅答案,这一个,这一个以及许多其他更多用法示例cellattr.