0

多くの異なる 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);
    },
});
4

2 に答える 2

2

追加のパラメーターを渡すには、次を追加できます。

 postData: { ExtraDataName: ExtraDataValue },

その後、jqGrid がデータを取得するたびに、その名前のペアがコントローラーに渡されます。

于 2013-01-25T18:56:27.960 に答える
0

を使用serializeGridDataすると、jqGridは、リクエストで送信されたデータを変更するイベントを提供します。イベントは現在のグリッドのコンテキストで呼び出されるため、を使用して現在のグリッドにアクセスできますthis

拡張することで、グリッドを変更せずに$.jgrid.defaults、すべてのグリッドがパラメーターを追加のリクエストパラメーターとして送信するようにすることができます。loadonce

$.extend($.jgrid.defaults, {
    serializeGridData: function(postData) {
        var isLoadonce = $(this).jqGrid('getGridParam', 'loadonce');
        var newPostData = $.extend(postData, {
            loadingType: isLoadonce ? 'loadAll' : 'loadChunk'
        });
        return $.param(newPostData);
    },
});
于 2013-01-28T10:44:02.690 に答える