【问题标题】:jqGrid inline editing event on "Esc" cancel“Esc”取消jqGrid内联编辑事件
【发布时间】:2010-04-27 02:30:00
【问题描述】:

有谁知道 jqGrid 内联编辑是否会抛出可以处理的事件?以下代码是我要完成的一个简单示例:

jQuery('#list').jqGrid('editRow', 0, true, false, false, false, {onClose: function(){alert('onClose')}}, reloadGrid);

我希望能够处理“Esc”取消事件。 onClose 事件可用于表单编辑:

请参阅respective section in jqGrid's documentation

但不适用于内联编辑,并且内联编辑文档除了非常不具体的 extraparam 选项之外不提供任何事件明智的选择:

http://www.trirand.com/jqgridwiki/doku.php?id=wiki:inline_editing

我无法弄清楚如何使用extraparam 选项。有什么建议吗?

【问题讨论】:

    标签: event-handling jqgrid inline-editing


    【解决方案1】:

    根据您的链接:

    extraparam:一个数组类型名称:值。设置后,这些值将与其他值一起发布到服务器。

    所以这只允许您通过 POST 将自定义数据传回服务器。它不允许您添加事件处理程序。

    editRow 的 jqGrid 源代码包含以下 Escape 键处理程序:

    if (e.keyCode === 27) {$($t).jqGrid("restoreRow",rowid, afterrestorefunc);}
    

    因此引发了一个事件。根据文档:

    afterrestorefunc 如果已定义,则在恢复行后调用此函数。我们将 rowid 传递给这个函数

    所以没有明确的转义键回调函数,尽管按下转义键会触发afterrestorefunc。不幸的是,当通过 Enter 键保存一行时也会调用此事件:

    if (e.keyCode === 13) {
        var ta = e.target;
        if(ta.tagName == 'TEXTAREA') return true;
        $($t).jqGrid("saveRow",rowid,succesfunc, url, extraparam, aftersavefunc,errorfunc, afterrestorefunc );
        return false;
    }
    

    但如果您小心,您也许可以使用afterrestorefunc 来满足您的需求。

    【讨论】:

      【解决方案2】:

      嗨,贾斯汀,感谢您的及时回复和帮助。

      虽然afterrestorefunc 回调显示了对我的询问的承诺,但这仍然不是我目前正在寻找的内容。据我所知,这将是有益的唯一原因是如果我调用了restoreRow 方法。但我面临的问题是editRow 正在通过“Esc”键关闭,我需要能够处理该事件。但是,您的回复让我想到了 editRow 回调,并且那里还有一个 afterrestorefunc 回调定义:

      jQuery("#grid_id").jqGrid('editRow',rowid, keys, oneditfunc, succesfunc, url, extraparam, aftersavefunc,errorfunc, afterrestorefunc);
      

      这正是我所需要的,而且似乎工作得很好。尽管您的回答不是 100% 适合我的问题,但它确实为我指明了正确的方向。感谢您的帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-10-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多