JqGrid colModel 格式化程序变量
JqGrid colMoldel formatter variable
(jqgrid 4.13.6 免费版)
我有一些日期时间列,我将其定义为 {... formatter:"date" ... },没关系。
现在,在某些情况下,根据字段值,我需要使用另一个自定义格式化程序。
由于formatter:"date"是jqgrid原生的,不知道怎么解决这种情况
示例:通常字段值为日期时间,例如“2017-04-18 10:06”,这对于格式化程序来说是可以的:"date"。但是,在少数情况下,该值是一个字符串,例如 "ALL DATES"。只有在这些情况下,格式化程序必须是 "myCustomFormatter",
NOT formatter:"date",因为我不想修改 jqgrid 本机 "date" 函数来考虑这种特殊情况。
您可以为列使用自定义 格式化程序,如下所示。
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();
}
}
我建议您检查免费 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"
.
(jqgrid 4.13.6 免费版)
我有一些日期时间列,我将其定义为 {... formatter:"date" ... },没关系。
现在,在某些情况下,根据字段值,我需要使用另一个自定义格式化程序。 由于formatter:"date"是jqgrid原生的,不知道怎么解决这种情况
示例:通常字段值为日期时间,例如“2017-04-18 10:06”,这对于格式化程序来说是可以的:"date"。但是,在少数情况下,该值是一个字符串,例如 "ALL DATES"。只有在这些情况下,格式化程序必须是 "myCustomFormatter", NOT formatter:"date",因为我不想修改 jqgrid 本机 "date" 函数来考虑这种特殊情况。
您可以为列使用自定义 格式化程序,如下所示。
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();
}
}
我建议您检查免费 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"
.