使用'in array'搜索运算符或自定义搜索功能进行jqGrid客户端搜索

时间:2012-05-30 19:08:16

标签: jquery search jqgrid client-side

我在没有搜索对话框的情况下将客户端搜索应用于jqGrid,但我需要使用自定义搜索功能或更聪明的搜索运算符执行搜索,其中一个基本上会执行$.inArray([searchString],[searchField])。< / p>

我的网格包含datatype: 'json'loadonce: 'true',但未使用multisearch。我要搜索的相关列包含colModel: [ {name: 'ancestorIds', hidden: true } ],它将包含一系列ID,例如[1,2,26,42]。 基于this answer,我正在从网格外的点击事件初始化单字段搜索,如下所示:

var selectedId = $('#selectedId').val();
var $grid = $('#grid');
var postdata = $grid.jqGrid('getGridParam','postData');
$.extend(postdata, {
    filters: '',
    searchField: 'ancestorIds',
    searchOper: 'cn',
    searchString: selectedId
}); 
$grid.jqGrid('setGridParam', { search: true, postData: postdata });
$grid.trigger("reloadGrid", [{page: 1}]);

这样可以正常工作,除非selectedId为2,使用searchOper: 'cn'将错误地返回包含26或42的行。我的问题是,如何修改搜索以仅返回selectedId所在的行是数组的实际值?

修改
给定了几个样本行,ancestorIds的值为selectedId[1,2,26,42]的值为2 ...... [2]
[2,42]
[42]
[22]
{{1}}

...上面的代码选择了每一行,但我只希望它返回前三行。

1 个答案:

答案 0 :(得分:0)

我不完全明白你的例子。如果您希望在“ancestorIds”列中搜索具有完全匹配,则应使用'eq'操作而不是'cn'

如果你真的需要实现非常自定义的本地搜索方法,你可以使用我在the answer中描述的技术。

如果您不需要如此硬核定制本地过滤,您应该更详细地描述您的确切要求。