1

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

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

我希望能够处理“Esc”取消事件。该onClose事件可通过表单编辑获得:

请参阅jqGrid 文档中的相应部分

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

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

我无法弄清楚如何使用这些extraparam选项。建议?

4

2 回答 2

2

根据您的链接:

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

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

jqGrid 源代码editRow包含以下 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来满足你的需要。

于 2010-04-27T13:23:11.290 回答
0

嘿贾斯汀感谢您的及时响应和帮助。

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

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

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

于 2010-04-27T18:21:10.463 回答