多くの異なる jqGrid の AJAX リクエストを処理するための PHP スクリプトがあります。
「sidx」パラメータと「sord」パラメータを使用して「ORDER BY」ステートメントを生成し、「page」パラメータと「rows」パラメータを使用して「LIMIT」ステートメントを生成します。
こちらの PHP の例に似ています。
問題は、PHP スクリプトでは、現在の jqGrid の loadonce パラメータが設定されているかどうかを判断できないことです。ただし、設定されていない場合にのみ、返されたデータをフィルタリングする必要があります (ページと行による制限)。
jqGridに追加のパラメータを送信させるにはどうすればよいですか? すべてのグリッドを変更したくありません。それを行うグローバルな方法はありますか?
- - - 編集 - - -
この回答(こことここ)の助けを借りて、私は今これを得ました。
$.extend($.jgrid.defaults, {
postData: {
loadingType: function() {
var isLoadonce = $("#list1").jqGrid('getGridParam', 'loadonce');
console.log('isLoadonce: ' + isLoadonce);
return isLoadonce ? 'loadAll' : 'loadChunk';
},
},
});
これは、グリッドの ID が「list1」の場合に機能します。ID なしで現在のグリッドを参照するにはどうすればよいですか?
------ 編集 2 ------
これはうまくいくようです。私にはハックのように見えます。より良い方法はありますか?
$.extend($.jgrid.defaults, {
serializeGridData: function(postData) {
var isLoadonce = $(this).jqGrid('getGridParam', 'loadonce');
var newPostData = $.extend(postData, {
loadingType: isLoadonce ? 'loadAll' : 'loadChunk'
});
return $.param(newPostData);
},
});