如何在不重新加载整个网格的情况下删除jqgrid行?

时间:2011-10-17 19:56:57

标签: asp.net-mvc jqgrid

我有一个包含多个jqgrids的网页,每个网页都启用了内联编辑,启用了“操作”列(编辑图标)并禁用了寻呼机。我需要处理每一行的删除事件,以便我可以处理删除而无需重新加载服务器端数据。我已经看过jqGrid Delete a Row中提到的方法了,除非我有两个问题让我感到困惑,否则它会非常有用 -

  1. rp_ge事件中的delOptions.onClickSubmit参数是否有更多详细信息? 我的列的delOptions设置为 -
  2. delOptions: {onclickSubmit: function(rp_ge, rowid) {return onRowDelete(rp_ge,rowid);}},processing:true }},

    有没有办法从该事件中获取网格ID?我想要一个通用函数,我可以用来处理页面上所有网格的删除事件。 rp_ge参数有gbox,有时包含附加的网格ID?但是我不知道它是什么,因为我不知道它何时被填充,何时不是。

    function onRowDelete(rp_ge, rowid) {
     //hardcoded grid id.. don't like it.
     var gridid = '#Grid_X';
     //what is this gbox?? can i get grid id predictable from it?
     //var gridid = rp_ge.gbox.replace("#gbox_", "");
     var grid = $('#Grid_X');
     rp_ge.processing = true;
     var result = grid.delRowData(rowid);
     if (result) {
        $("#delmod" + grid[0].id).hide();
     }
     return true;
    }
    
    1. jqGrid Delete a Row方法中,代码$("#delmod"+grid[0].id).hide();手动隐藏了弹出删除确认对话框。我注意到的是,当弹出对话框时,jqgrid会强调背景页面(使其变得淡灰色)。但是在手动关闭弹出窗口(实际隐藏?)之后,背景仍然不再强调。所以看起来页面没有焦点(甚至禁用)。这有什么办法可以修复吗?这也可以在demo写的Oleg上看到。
    2. 任何帮助将不胜感激。 (PS - 我会对同一篇文章发表评论,但我还没有足够的观点评论其他人的答案。)

1 个答案:

答案 0 :(得分:0)

回答你的第二点。 Oleg之类的一些示例(例如this)具有以下修改。

 $("#delmod" + grid[0].id).hide();

替换为

$.jgrid.hideModal(
    "#delmod"+grid_id, 
    {gb:"#gbox_"+grid_id,jqm:rp_ge.jqModal,onClose:rp_ge.onClose}
);

这将在删除操作后返回焦点。