2012-05-30 65 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中描述的技術。

如果您不需要如此核心定製的本地過濾,您應該更詳細地描述您的確切需求。