2

jqGridインライン編集を使用してクライアント側でデータを並べ替える直接的な方法はありますか? 行ヘッダーがクリックされても、行が編集可能な場合、データは並べ替えられません。

4

3 に答える 3

1

これと同じ問題がありました。行が編集モードの場合、並べ替えることができません。私の場合、ユーザー編集の状態は問題ではありませんでした。私のグリッドはclientSideであり、ユーザーがクリックして変更を送信するページに保存ボタンがあります。

私はいくつか掘り下げて、自分に合った解決策を見つけました。他の人に役立つことを願っています。基本的に私がしたことは、列見出しのクリックイベントを並べ替えて、私のものが最初になるようにすることでした。次に、クリック イベントで saveRows を呼び出します。

イベントの並べ替えについて、別のスレッドから取得したコードを次に示します。

        $.fn.bindUp = function(name, fn) {
        // bind as you normally would
        // don't want to miss out on any jQuery magic
        this.on(name, fn);

        // Thanks to a comment by @Martin, adding support for
        // namespaced events too.
        this.each(function() {
            var handlers = $._data(this, 'events')[name.split('.')[0]];
            // take out the handler we just inserted from the end
            var handler = handlers.pop();
            // move it at the beginning
            handlers.splice(0, 0, handler);
        });
    };

次に、コードに行を保存するためのハンドラーを追加します。

        $("th.ui-th-column", $("#pacPaymenReviewGridNEW")[0].grid.hDiv).bindUp('click', function(e) {
        var $th = $(e.currentTarget).closest("th");
        if ($th.length > 0) {
            pacTransferFundMaint.saveRowsById('#pacPaymenReviewGridNEW');
        }
    });     
于 2013-12-17T18:55:15.850 に答える
0

調査の結果、次のアルゴリズムを見つけました。

  1. ヘッダー クリック イベントをキャッチします。例: ('th').click(function(){})
  2. saveRowこのイベントが発生したときに使用して、編集モードになっている行データを保存します
  3. クリックされたヘッダーを識別します。
  4. グリッド データをそのヘッダーで昇順または降順で並べ替えます。お気に入り
    $('#dataGrid').jqGrid('setGridParam', ({ data: list, sortname: columnHeader, sortorder: 'asc',rowNum: list.length })).trigger('reloadGrid');

  5. 選択した行を再び編集可能にします。editRowこれに使用できます。

注:手順 2 ~ 5 は、手順 1 のイベント (ヘッダー クリック イベント) で実行する必要があります。

于 2013-04-06T06:48:00.257 に答える