2

ページャー付きのグリッドがあります。現在のページで行がインライン編集されている間、ページャーが別のページをロードしないようにする必要があります。したがって、グリッドを作成するときに onPaging 関数を定義します

....
onPaging : function(){
        if (inEdit()>0){
            alert("Finish editing the current line");
            return 'stop';
        }
    }
....

関数 inEdit は、attr が編集可能な行数を単純にカウントします。

これは仕事をしますが、後でページングが停止されたときに編集中だった行でrestoreRow関数を呼び出すと、関数は行を前の状態に復元できません。

後で編集:

この関数を呼び出して編集をキャンセルすると、後で問題が発生します。

function cancelEdit(id){
    /*this line does nothing at all --> */ $('#list').jqGrid('restoreRow',id);
    //The only way restore worked is by calling a grid reload but that is not really a solution
    $('#list').trigger("reloadGrid", [{page:$('#list')[0].p.page}]);
    $('#'+id+' [name=editButton]').show();
    $('#'+id+' [name=submitButton]').hide();
    $('#'+id+' [name=cancelButton]').hide();
}

PS: 編集/保存/キャンセル/削除はカスタム ボタンです。

4

1 に答える 1

0

あなたがやっていることを見て、 jqGrid - Inline edit - Detect dirty/changed cellsでOlegの投稿をチェックし 、そのフラグを使用してページングを防ぐと、あなたがしようとしていることを達成できると思います。

于 2013-03-08T15:56:43.347 に答える