【发布时间】:2019-04-27 07:27:57
【问题描述】:
我正在使用 free-jqgrid 4.15.4 来显示数据。我需要使用Date less but not empty 过滤器搜索日期列,但它没有正确过滤。结果它给了我比搜索日期大的日期。
以下代码用于日期列中的自定义过滤器:
customSortOperations: {
dlne: {
operand: "<!=''",
text: "Date less but not empty",
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);
var retFData = convertD(fieldData), t = new Date(retFData);
if ((retFData.getFullYear() < searchValue.getFullYear()) && (retFData.getMonth() < searchValue.getMonth()) && (retFData.getDate() < searchValue.getDate())) {
return true
}
}
},
}
我用于将字符串转换为日期格式的convert 函数如下所示:
function convertD(dateField) {
var date = new Date(dateField),
mnth = ("0" + (date.getMonth() + 1)).slice(-2),
day = ("0" + date.getDate()).slice(-2);
// year= (date.getFullYear())
var retVal = [day, mnth, date.getFullYear()].join("/");
return retVal;
}
我从here 那里得到了这个想法,并做了一些改变,但似乎无济于事。因此请求社区对此提供帮助。
【问题讨论】:
-
能否提供demo 一些测试数据,重现问题?输入数据的确切格式可能很重要。例如,您可以获取一些我之前创建的 jsfiddle 演示并对其进行修改,以便可以看到问题。
-
另外我不明白
var retFData = convertD(fieldData), t = new Date(retFData);这行的意思。如果使用formatter: "date"的srcformat和newformat选项对应输入和显示数据格式,那么fieldData和searchValue就已经是Date对象了。请参阅the old answer 的代码和演示。 -
你好@Oleg,(这里)[jsfiddle.net/6rub7svz/1/] 是带有一些测试数据的 js fiddle 演示。在这里,您会看到一些日期列是空的。我想要的是创建一个自定义过滤器,它能够在不选择空行的情况下选择行。这里的操作符是 date less but not empty .
标签: jqgrid free-jqgrid