免费jqGrid - “空”和“非空”的自定义过滤规则

时间:2017-01-03 10:52:09

标签: jquery jqgrid free-jqgrid

我熟悉可以添加到每个列过滤器旁边左侧下拉列表选项中的自定义操作。

我所追求的是添加两种新类型的自定义运算符进行过滤: 1.空 2.不是空的

虽然我知道如何实现这一点,但我在Free JqGrid中遇到了此类流程的UX问题。这是因为这两个自定义运算符在选择后不需要用户输入任何内容,因此用户在选择具有空值的运算符后必须单击“输入” - 非常混乱。

我想知道的是如何考虑我已经定义了一个新的自定义运算符:

  1. 在选择此运算符后进行事务处理,无需等待用户键入任何内容,或单击enter(类似onSelect)。
  2. (可选)禁用在选择特定运算符后在该特定过滤器中键入任何内容的功能。
  3. 谢谢,

    塔尔。

1 个答案:

答案 0 :(得分:3)

感谢您指出定义自定义一元操作的问题。我提交了the changes代码的free jqGrid,以允许在新选项customUnaryOperations中指定自定义一元操作。

The demo定义了两个自定义过滤操作:" em" ("是空的")和" nm" ("不是空的")并使用" Amount"中的操作。和"笔记"列。专栏"注释"另外使用标准(预定义)" nu" ("为空")和" nn" ("不是空")操作。列"金额"用途

searchoptions: {sopt: ["eq", "ne", "em", "nm"]}

和列"注意"用途

searchoptions: {sopt: ["cn", "bw", "ew", "eq", "bn", "nc", "en", "nu", "nn", "em", "nm"]}

此外,该演示使用customSortOperations和新customUnaryOperations

customUnaryOperations: ["em", "nm"],
customSortOperations: {
    em: {
        operand: "=''",
        text: "is empty",
        filter: function (options) {
            var v = options.item[options.cmName];
            if (v === undefined || v === "") {
                return true;
            }
        }
    },
    nm: {
        operand: "!=''",
        text: "isn't empty",
        filter: function (options) {
            var v = options.item[options.cmName];
            if (v !== undefined && v !== "") {
                return true;
            }
        }
    }
}