【问题标题】:Custom Filter records in Free-jqgrid 4.15.4Free-jqgrid 4.15.4 中的自定义过滤器记录
【发布时间】:2018-10-08 15:09:51
【问题描述】:

我有一个关于免费 jqGrid 4.15.4 中的自定义过滤器的问题。我想实现一个搜索功能,如果我选择“小于但不为空或为空”过滤器,那么它应该只显示列不为空或空的记录行。我能够从this thread 创建自定义过滤器,它给出'is null' 或'isn't 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,其中包含要求和两个图像,以便更清晰。那么,有人可以帮我解决这个问题吗?我希望我没有再次问这个问题。

提前谢谢你。

【问题讨论】:

  • 简而言之,如何在使用过滤器搜索时丢弃突出显示的行(第二张图片,其中薪水列对于 2 人为空)。

标签: jqgrid free-jqgrid


【解决方案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/

【讨论】:

  • 首先要感谢 Oleg,感谢您提供的出色帮助。这正是我正在寻找的运算符。我错过了提高自己的地方是parseFloat(v) &lt; parseFloat(options.searchValue)。你介意我问一下 v 吗?我得到了 v. 中的元素值
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-06-27
  • 1970-01-01
  • 2011-08-10
  • 1970-01-01
  • 2014-07-12
  • 2013-12-28
  • 2014-12-14
相关资源
最近更新 更多