free-jqgrid:以编程方式进行本地多重搜索?

free-jqgrid: programmatically do a local multipleSearch?

找了几个小时甚至几天后,我仍然找不到满意的解决方案:

我想做的就是以编程方式使用 jqgrid(当前使用 free-jqgrid 4.9.0)的本地 search/filter 选项。

我想做一些类似于本地 "multipleSearch" 的事情 - 而不必从服务器重新加载数据。

到目前为止我发现并尝试过的是这段代码:

var filters = { "groupOp": "AND", "rules": [{ "field": "my_field", "op": "eq", "data": "1234" }] };

//To filter:
jqGridFilter(filters , $('#my_grid'));

但这似乎只适用于旧版本的 jqgrid,因为我只收到错误:"Uncaught ReferenceError: jqGridFilter is not defined"

TL;DR: 我 "just" 想以编程方式使用(最好)free-jqgrid 4.9.0 进行本地 "multipleSearch"。

感谢您的帮助!

更新:

尝试 Oleg 在他的评论中提到的 postData 方式后,我的主要问题是我使用了只有 1 个规则的 "groupOp":

postData = {
  filters : {"groupOp":"AND","rules":[{"field":"name","op":"cn","data":"anne"}]},
  search : true
}

当省略 "groupOp" 选项时,它工作了几次。我的代码如下所示:

$("#grid").jqGrid("setGridParam", { 
    postData : {
        filters     :   {"rules":[{"field":"name","op":"cn","data":"anne"}]},
        search      :   true
        }
    }).trigger("reloadGrid");

在重新加载并尝试不同的过滤器几次之后,由于某些奇怪的原因,原始代码不再起作用。我不知道出了什么问题 - 要么是我的问题,要么是 free-jqgrid 中的一些奇怪错误。

要应用数据过滤,需要执行以下操作

$("#grid").jqGrid("setGridParam", { 
    postData: {
        filters: JSON.stringify({
            groupOp: "AND",
            rules: [
                { field: "name", op: "cn", data: "anne" }
            ]
        })
    },
    search: true
}).trigger("reloadGrid", { page: 1 });

其中 "name"colModel 中要设置过滤器的列的名称。