ページャー付きのグリッドがあります。現在のページで行がインライン編集されている間、ページャーが別のページをロードしないようにする必要があります。したがって、グリッドを作成するときに 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: 編集/保存/キャンセル/削除はカスタム ボタンです。