パラメータが内部変数navGrid
の関数に保存されているため、編集イベントのパラメータを簡単に変更することはできません。したがって、クリックイベントを「編集」ボタンにバインドして、editGridRowメソッドを呼び出す新しいイベントを、必要なすべての新しいパラメータにバインドする必要があります。新しいパラメータには、beforeShowFormのようなイベントハンドラを含めることができます。
を更新し
var grid=$("#list"); // your jqGrid (the <table> element)
var grid_id = grid[0].id; // id of the <table> element like "list"
$("#edit_"+grid_id).unbind('click'); // unbind original 'click' handle
$("#edit_"+grid_id).click(function() {
if (!$(this).hasClass('ui-state-disabled')) {
var sr = grid[0].p.selrow; // get id of selected row
if (sr) {
grid.jqGrid("editGridRow",sr,
{ // here you should place all Edit parameters
beforeShowForm: function(formid) {
alert("In beforeShowForm()");
}
});
} else {
// display error message
$.jgrid.viewModal("#alertmod",{gbox:"#gbox_"+grid_id,jqm:true});
$("#jqg_alrt").focus();
}
}
return false;
});
:
対応するコードは以下程度することができますが、直接どこかeditGridRowメソッドを呼び出すと、あなたは私が知っている
var grid=$("#list"); // your jqGrid (the <table> element)
var orgEditGridRow = grid.jqGrid.editGridRow; // save original function
$.jgrid.extend ({editGridRow : function(rowid, p){
$.extend(p,
{ // modify some parameters of editGridRow
beforeShowForm: function(formid) {
alert("In new beforeShowForm()");
}
});
orgEditGridRow.call (this,rowid, p);
}});
このグリッドは他のコードによって作成され、編集は主に行をダブルクリックすることで行われます。私はそれを取るこれはその場合に動作しませんか? –
@jcm:おそらくあなたの質問にはすでに誤解があります。イベントハンドラ 'beforeShowForm'は、フォーム編集の場合にのみ使用されます。あなたのコードのどこかで 'editGridRow'関数を呼び出すか、' navGrid'関数(例えば '$("#list ")を使ってページャーに" Edit "ボタンを追加してください)jqGrid( 'navGrid'、 '#pager '); ')。別の状況がある場合、イベントハンドラの名前は** before **フォームでなければなりません。どのような編集方法を使用し、どのようにコードがどのように表示されるかをもっと説明できますか? – Oleg
'editGridRow()'が別のコードによって呼び出されています。ページャーバーから呼び出されていません。私は外部の 'editGridRow()'呼び出しでも 'beforeShowForm'をオーバーライドする必要があります。グリッドは変更できない別のコードによって作成されています。 –