1

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

我的网格有datatype: 'json'并且loadonce: 'true'不使用multisearch. 我要搜索的相关列有colModel: [ {name: 'ancestorIds', hidden: true } ],它将包含一个 id 数组,例如[1,2,26,42]. 基于这个答案,我正在从网格外的单击事件初始化单个字段搜索,如下所示:

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值为selectedId2... [1,2,26,42]
[2]
[2,42]
[42]
[22]

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

4

1 回答 1

0

我不完全理解你的例子。如果您想在“ancestorIds”列中的搜索中进行精确匹配,您应该只使用'eq'operation 而不是'cn'.

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

如果您不需要对本地过滤进行如此严格的定制,您应该更详细地描述您的确切要求。

于 2012-05-30T19:26:15.570 回答