通过setGridParam()设置jqGrid编辑选项

我需要在初始化网格后为jqGrid的编辑事件设置一些事件处理程序。 也就是说,我需要处理beforeShowForm编辑事件。 我使用setGridParam尝试了这个,但它似乎没有做任何事情。

 $('#mygrid').jqGrid('setGridParam', { edit: { beforeShowForm: function(formid) { // handle event } } }); 

jqGrid的文档对于如何设置这些选项的信息不足。 我怎么能设置这些事后呢? 我知道你可以通过jqgrid()的第二个参数来设置它。 我只需要在创建后执行此操作。

您可以轻松更改编辑事件的参数,因为参数保存在navGrid函数的内部变量中。 因此,您应该将click事件解除绑定到“编辑”按钮,并将调用editGridRow方法的新事件绑定到您需要的所有新参数。 新参数可以包括事件处理程序,如beforeShowForm 。

相应的代码可以是以下内容:

 var grid=$("#list"); // your jqGrid (the  element) var grid_id = grid[0].id; // id of the 
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  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); }});

我知道这有点晚了,但我遇到了同样的问题。 在查看jqGrid源代码后,我就是这样做的:

 $.extend($.jgrid.edit, { beforeShowForm: function (frmmgr) { alert('insert code here'); } });