首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在free-jqgrid中进行日期“较少但不是空”的自定义搜索

在free-jqgrid中进行日期“较少但不是空”的自定义搜索
EN

Stack Overflow用户
提问于 2019-04-27 07:27:57
回答 1查看 124关注 0票数 1

我使用的是免费的jqgrid 4.15.4来显示数据。在那里,我需要使用Date less but not empty筛选器搜索日期列,但它没有正确地过滤。结果,它给出了比搜索日期更大的日期。

下面的代码用于日期列中的自定义筛选器:

代码语言:javascript
复制
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函数如下所示:

代码语言:javascript
复制
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的想法,做了一些修改,但似乎没有用。所以请求社区在这方面提供帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-27 11:54:37

例如,可以将dlne的代码修复为:

代码语言:javascript
复制
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, searchValue;

        // the exact condition to test for "empty" depend on the format of your data
        if (!options.item[options.cmName]) {
            return false; // ignore empty data
        }

        fieldData = $.jgrid.parseDate.call(this, srcformat, options.item[options.cmName]);
        searchValue = $.jgrid.parseDate.call(this, newformat, options.searchValue);
        return fieldData.getFullYear() < searchValue.getFullYear() ||
            (fieldData.getFullYear() === searchValue.getFullYear() &&
                fieldData.getMonth() < searchValue.getMonth()) ||
            (fieldData.getFullYear() === searchValue.getFullYear() &&
                fieldData.getMonth() === searchValue.getMonth() &&
              fieldData.getDate() < searchValue.getDate());
    }
}

请参阅https://jsfiddle.net/OlegKi/51vfn4k9/11/

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55878302

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档