検索ダイアログなしで 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
、selectedId
値が 2...
[1,2,26,42]
[2]
[2,42]
[42]
[22]
...上記のコードはすべての行を選択していますが、最初の 3 行のみを返したいと考えています。