0

jqGrid を LOAD ONCE で使用してから、クライアント側でページングしています。フィルタ ツールバーを追加すると、何らかのフィルタが適用された後にページングが非常に遅くなります。

$(gridElement).jqGrid({
        postData: post,
        loadComplete: function (data) {
            onLoadComplete(data); 
        },
        gridComplete: function () {
            onGridComplete(); 
        },
        datatype: function (pdata) {
            dataSource(pdata);
        },
        colNames: columnNames,
        colModel: columnModel,
        rowNum: 10, 
        rowList: [10, 20, 30],
        viewrecords: true,
        pagination: true,
        pager: pagerElement,
        loadonce: true,
        sortorder: "desc",
        sortname: 'id',
        cellEdit: false,
        search: true,
        gridview: true,
        //rownumbers: true
    });


    $("#jqGrid").jqGrid('filterToolbar',{ 
        stringResult : true, 
        searchOnEnter : false });

なぜこれが発生するのですか?ページング ボタンをクリックすると、一般的なイベント (onPaging、onGridComplete など) が発生する前に遅延が発生します。

グリッドが完成すると、datatype プロパティが「local」に設定されることに注意してください。

私の推測では、ページを表示するたびにフィルタリングを試みます (または、一度に 1 ページのみをフィルタリングしますか? よくわかりません)。しかし、それを無効にすることはできますか?

ありがとう。

4

2 に答える 2

3

代わりに DataTables (http://www.datatables.net) を使用することを検討してください。並べ替えは、データセット全体に基づいていると思います (これにより、このスクリプトの処理が非常に遅くなり、イベントがバインドされます)。私は最近、テーブルの並べ替えとグリッド レイアウトのオプションを調査しました。パフォーマンスの問題により、jqGrid ではなく DataTables を使用しました。

さらに、最新バージョンを入手しても速度が向上しないかどうかを確認してください... http://www.trirand.com/blog/ (6 月の新しいリリース)。

于 2012-08-02T01:24:30.840 に答える
2

別のグリッド ライブラリを使用する場合は、 SlickGridをご覧になることをお勧めします。

私はしばらくの間それを使用しています。クラス最高の JavaScript グリッド ライブラリのようです。慣れればカスタマイズも簡単で、プラグインも豊富です。

于 2012-08-02T12:28:49.157 に答える