jqGrid定義でURLを単に「ハードコーディング」する代わりに、AJAX呼び出しを実行する独自の関数が必要です。
私はいくつかのオプションを試しましたが、URLを直接適用した場合のシナリオを真に模倣するものはありません。
基本的に私が必要としているのは、jqGridのすべてのデフォルトの動作を維持することですが、ajaxを実行する責任があるのはサーバーです。
var loadData = function () {
var formData = $('#formFilters').serializeArray();
getData(formData)
.then(function (data) {
$grid
.setGridParam({ "datatype": "jsonstring", "datastr": data })
.trigger("reloadGrid");
resizeGrid();
})
};
そして、グリッドは次のように接続されます。
$grid.jqGrid({
datatype: loadData,
colModel: [...]
ここでの主な問題は、並べ替えによってajax呼び出しがトリガーされないことです。これを、もう少しハックする必要があるのではないかと思います。
グリッドとデータサービス機能の間でこのデカップリングを実現する方法に関するベストプラクティスはありますか?
ありがとう、アレックス
このイベントにフックすることができます:
jqGridSortCol
ここに文書化されています:http://www.trirand.com/jqgridwiki/doku.php?id = wiki:events
最初に、次のような現在のフィルターオブジェクトを取得してみてください。
var f = 'gridselector'
var flts = $( '#' + f ).jqGrid('getGridParam', 'postData').filters
そのオブジェクトを変更することができ、フックされたイベントよりも次のようなものを試してください。
$( '#' + f ).jqGrid( 'setGridParam', { search: true, postData: flts } );
$( '#' + f ).jqGrid().trigger('reloadGrid');
ps ..多分あなたはあなたの問題からいくつかのjsfiddleをすることができるので、私たちはもっと深く見ることができます:)
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加