Free-jqgrid 4.15.4

时间:2018-10-08 15:09:52

标签: jqgrid free-jqgrid

关于免费jqGrid 4.15.4中的自定义过滤器,我有一个问题。我想实现一种搜索功能,如果我选择“小于但不为空或为空”过滤器,则该过滤器应仅显示记录行,该列不为空或为空。我能够创建自定义过滤器,该过滤器从this thread给出'is null'或'is n't null'。 但是,当我尝试为矿山需求创建时,我无法弄清楚我必须使用什么运算符来“小于但不能为null或为空”。

例如,我已使用以下代码示例创建自定义过滤器:

 customUnaryOperations: ["lne"],
 customSortOperations: {
           lne: {
                operand: "<!=''",
                text: "less but not empty",
                filter: function (options) {
                    var v = options.item[options.cmName];
                    if (v !== undefined && v !== "") {
                        return true;
                    }
                }
            }

我在搜索选项工具栏中使用的上述运算符。

searchoptions: {
                     searchOperators: true,
                     sopt: ['eq', 'lt', 'gt','lne'],
                 }, search: true, 

同时,我不想使用 formatter:“ integer” (建议here),因为这只会将0分配给所有空记录列单元格,并且无论何时只要在记录中仍然可见选择“小于” 过滤器。

作为参考,我创建了一个fiddle,其中包括需求和两个图像,以更加清晰。那么,有人可以帮我这个忙吗?我希望我再次提出这个要求。

谢谢。

Grid_With_NoFiltersIN_SalaryField

Grid_with_Filter_InSalary_ButEmptyRecords

1 个答案:

答案 0 :(得分:1)

过滤器的代码可能如下所示

customSortOperations: {
    lne: {
        operand: "<!=''",
        text: "less but not empty",
        filter: function (options) {
            var v = options.item[options.cmName];

            if (v !== undefined && v !== "" &&
                    parseFloat(v) < parseFloat(options.searchValue)) {
                return true;
            }
        }
    }
}

请参阅修改后的演示https://jsfiddle.net/OlegKi/x3fger4z/17/