我需要在初始化网格后为jqGrid的编辑事件设置一些事件处理程序.也就是说,我需要处理beforeShowForm编辑事件.我用setGridParam尝试了这个,但它似乎没有做任何事情.
$('#mygrid').jqGrid('setGridParam', {
edit: {
beforeShowForm: function(formid) {
// handle event
}
}
});
jqGrid的documentation关于如何设置这些选项的信息量不足.我该如何设置这些事后呢?我知道你可以通过jqgrid()的第二个参数来设置它.我只需要在创建后执行此操作.
最佳答案 您可以轻松更改编辑事件的参数,因为参数保存在navGrid函数的内部变量中.因此,您应该将click事件解除绑定到“编辑”按钮,并将调用
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);
}});