2012-05-30 63 views
1

我正在将客户端搜索应用到没有搜索对话框的jqGrid,但我需要使用自定义搜索功能或更多聪明的搜索运营商,其中之一将基本上做$.inArray([searchString],[searchField])jqGrid客户端搜索'数组'搜索运算符或自定义搜索功能

我的网格有datatype: 'json'loadonce: 'true',并且不使用multisearch。我想搜索的相关列有colModel: [ {name: 'ancestorIds', hidden: true } ],它将包含一个像[1,2,26,42]这样的ID数组。 基于this answer,我初始化从click事件电网外单场搜索,这样的事情:

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是数组的实际值的行?

EDIT
具有以下值给定的几个示例行为ancestorIds,和2的selectedId值... [1,2,26,42]
[2]
[2,42]
[42]
[22]

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

回答

0

我不完全理解你的例子。如果您想在'ancestorIds'列中进行搜索时使用完全匹配,则只需使用'eq'而不是'cn'

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

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