我在没有搜索对话框的情况下将客户端搜索应用于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}}
...上面的代码选择了每一行,但我只希望它返回前三行。
答案 0 :(得分:0)
我不完全明白你的例子。如果您希望在“ancestorIds”列中搜索具有完全匹配,则应使用'eq'
操作而不是'cn'
。
如果你真的需要实现非常自定义的本地搜索方法,你可以使用我在the answer中描述的技术。
如果您不需要如此硬核定制本地过滤,您应该更详细地描述您的确切要求。