我在免费的 jqGrid 中引入了自定义过滤功能,可以轻松实现青春等场景。答案提供了这种实现的一个例子。
在您的情况下,例如可以在短名称下定义新Date only "equal"
的比较操作,在短名称下定义比较操作。选项代码可能如下:"deq"
Date only "not equal"
dne
customSortOperations
customSortOperations: {
deq: {
operand: "==",
text: "Date only \"equal\"",
filter: function (options) {
var p = this.p, iCol = p.iColByName[options.cmName], cm = p.colModel[iCol],
newformat = cm.formatoptions != null && cm.formatoptions.newformat ?
cm.formatoptions.newformat :
$(this).jqGrid("getGridRes", "formatter.date.newformat"),
srcformat = cm.formatoptions != null && cm.formatoptions.srcformat ?
cm.formatoptions.srcformat :
$(this).jqGrid("getGridRes", "formatter.date.srcformat"),
fieldData = $.jgrid.parseDate.call(this, srcformat, options.item[options.cmName]),
searchValue = $.jgrid.parseDate.call(this, newformat, options.searchValue);
return fieldData.getFullYear() === searchValue.getFullYear() &&
fieldData.getMonth() === searchValue.getMonth() &&
fieldData.getDate() === searchValue.getDate();
}
},
dne: {
operand: "!=",
text: "Date only \"not equal\"",
filter: function (options) {
var p = this.p, iCol = p.iColByName[options.cmName], cm = p.colModel[iCol],
newformat = cm.formatoptions != null && cm.formatoptions.newformat ?
cm.formatoptions.newformat :
$(this).jqGrid("getGridRes", "formatter.date.newformat"),
srcformat = cm.formatoptions != null && cm.formatoptions.srcformat ?
cm.formatoptions.srcformat :
$(this).jqGrid("getGridRes", "formatter.date.srcformat"),
fieldData = $.jgrid.parseDate.call(this, srcformat, options.item[options.cmName]),
searchValue = $.jgrid.parseDate.call(this, newformat, options.searchValue);
return fieldData.getFullYear() !== searchValue.getFullYear() ||
fieldData.getMonth() !== searchValue.getMonth() ||
fieldData.getDate() !== searchValue.getDate();
}
}
}
为了能够使用新的"deq"
和"dne"
操作,您应该在sopt
其中searchoptions
的列中包含日期。
该演示使用上述代码。输入数据包含 3 个日期:"2015-04-15T15:31:49.357"
, "2015-04-15T21:15:40.123"
, "2015-04-15"
:
var mydata = [
{ id: "10", invdate: "2015-04-15T15:31:49.357", name: "test1",... },
{ id: "20", invdate: "2015-04-15T21:15:40.123", name: "test2",... },
{ id: "30", invdate: "2015-04-15", name: "test3", ...},
...
]
过滤方式15-Apr-2015
显示所有三行:

另一个演示使用几乎相同的代码,但以完整的日期/时间格式显示日期。尽管如此,过滤仍然有效。请注意,我在演示中使用了来自 GitHub 的最新免费 jqGrid 源。确实需要它,因为我对代码进行了一些小改动parseDate
以使演示工作。
