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 が配列の実際の値である行のみを返すように検索を変更するにはどうすればよいですか

編集:
次の値を持ついくつかのサンプル行が与えられancestorIdsselectedId値が 2... [1,2,26,42]
[2]
[2,42]
[42]
[22]

...上記のコードはすべての行を選択していますが、最初の 3 行のみを返したいと考えています。

4

1 に答える 1

0

私はあなたの例を完全には理解していません。'ancestorIds' 列での検索で正確に一致させたい場合は、 の'eq'代わりに operation を使用する必要があり'cn'ます。

非常にカスタムなローカル検索方法を本当に実装する必要がある場合は、回答で説明した手法を使用できます。

ローカルフィルタリングのハードコアなカスタマイズが必要ない場合は、正確な要件をより詳細に説明する必要があります。

于 2012-05-30T19:26:15.570 に答える