0

jqGrid を使用して多数の「動的」グリッドを表示する必要があります。動的とは、グリッドの定義とデータの両方がデータベースから取得されることを意味します。ページには多くのグリッドがあるため、サーバーのトリップ数を最小限に抑えようとしています。また、大量のデータがあるため、サーバー側のページングは​​必須です。

私のワークフローは

  • 各グリッドの初期化時に、 1 回のサーバー呼び出しでグリッド定義とデータの最初のページを取得します。
  • ユーザーがソート/ページングする場合、サーバーからデータのページを取得します

1 回の呼び出しでグリッド定義とデータの最初のページを取得したいので、datatype: 'json', url: '###' アプローチは使用できません。代わりに私は:

grid.jqGrid({
    mtype: 'post',
    ...        
    datatype: function (postdata) {
        if (!init.data) {
            var request = {
                screenId: settings.screenId,
                pageNumber: postdata.page,
                pageSize: postdata.rows,
                sortColumn: postdata.sidx,
                sortDirection: postdata.sortd,
                date: settings.date
            };
            site.callWs("/MyService", request, function (pageResponse) {
                //WHAT TO CALL HERE TO SET A PAGE OF DATA?
            });
        } else {
            //WHAT TO CALL HERE TO SET A PAGE OF DATA?
            init.data = null;
        }
    }
});

私のデータオブジェクト(pageResponseまたはinit.data)は次のようになります

データ オブジェクト

データのページが返されたら、jqGrid でどのメソッドを呼び出すべきかわかりません。addJSONData を検討しましたが、JSON を文字列に変換してから EVAL() を使用するのは効率が悪いようです。また、addRowDataまたはデータプロパティの設定を検討しましたが、サーバー側のページングを行っていることをjqGridに指示する方法がわかりません。データプロパティを1ページのレコードに設定した場合、jqGridにそれを伝えるために何をする必要がありますか?合計 50 件のレコードがあり、これは 10 ページ中の 1 ページです。

ご協力いただきありがとうございます。

4

1 に答える 1

0

それはユーザー エラーでした (私の :)。jqGrid の loadComplete に表示/非表示のロジックがいくつかありましたが、addJSONData が呼び出されたときにこのイベントは発生しません。

addJSONData は、適切に構造化された JavaScript オブジェクトが提供されている場合に問題なく機能します。

于 2013-01-10T15:30:24.363 に答える