(免费版jqgrid 4.13.6)
我有一些datetime列,我将其定义为{... formatter:" date" ......},那没关系。
现在,在某些情况下,根据字段值,我需要使用另一个自定义格式化程序。 格式化器:" date"是jqgrid本地人,我不知道如何解决这种情况。
示例:通常字段值是日期时间,例如" 2017-04-18 10:06",格式化程序可以使用:" date"。但是,在某些情况下,值是一个字符串,例如"所有日期"。只有在这些情况下,格式化程序必须是" myCustomFormatter", 不格式化:"日期",因为我不想修改jqgrid原生" date"能够考虑这种特殊情况。
答案 0 :(得分:1)
您可以将自定义格式化程序用于以下列。
formatter: function(cellvalue, options, rowObject) {
var date = new Date(cellvalue);
if(isNaN(date.getFullYear())){
return cellvalue;
} else {
return date.getDate() + "/" + (date.getMonth() + 1) + "/" + date.getFullYear();
}
}
<强> DEMO 强>
答案 1 :(得分:1)
我建议你检查免费jqGrid代码的the lines,看看自定义格式化程序的调用和预定义的格式化程序(如formatter: "date"
)之间的区别:
...
} else if (isFunction(cm.formatter)) {
v = cm.formatter.call(ts, cellval, opts, rwdat, act);
} else if ($.fmatter) {
v = $.fn.fmatter.call(ts, cm.formatter, cellval, opts, rwdat, act);
} else {
...
这意味着要从自定义格式化程序中调用formatter: "date"
,您只需使用
formatter: function (cellValue, options, rowObject, action) {
return $.fn.fmatter.call(this, "date", cellValue, options, rowObject, action);
},
unformat: function (cellValue, options, cell) {
return $.unformat.date.call(this, cellValue, options.formatoptions);
}
上面的代码只是将调用转发到格式化程序日期。请参阅https://jsfiddle.net/OlegKi/gq5hxtnc/。
最后需要做的是修改自定义格式化程序上面的代码,并不总是将调用转发给formatter: "date"
,但是,例如,如果输入不是字符串"ALL DATES"