我在免費的jqGrid中引入了custom filtering功能,可以輕鬆實現像青春這樣的場景。 The answer提供了這種實現的例子。
在你的情況下,可以定義新的Date only "equal"
比較下,例如短名稱"deq"
操作下簡稱dne
比較操作Date only "not equal"
。的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();
}
}
}
爲了能夠在與日柱searchoptions
sopt
使用新"deq"
和"dne"
操作應該包括在那裏。
The demo使用上面的代碼。輸入數據包含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
顯示的過濾所有的三排:
Another demo使用幾乎相同的代碼,但顯示日期以全日期/時間格式。儘管如此,過濾工作。請小心,我在演示中使用來自GitHub的最新免費jqGrid源代碼。這真的很有必要,因爲我在parseDate
的代碼中編寫了一些small changes以使演示工作。
哪裏應該定義那些customSortOperations? –
@RicoW:查看[demo]的代碼(http://www.ok-soft-gmbh.com/jqGrid/OK/DatetimeSearch1.htm)。應該像使用其他選項一樣使用選項'customSortOperations'('datatype','colModel',...)。重要的是,該功能只存在於我開發的[免費jqGrid **](https://github.com/free-jqgrid/jqGrid)fork中。 – Oleg