HY,
在我的应用程序中,我使用JQGrid工具显示列表。
我需要在左右两次显示上下文菜单(我的客户选择......)。这可能吗?
为了在右键单击显示上下文菜单,我正在使用loadComplete函数,如下所示:
loadComplete: function () {
$("tr.jqgrow", this).contextMenu('contextMenu', {
bindings: {...},
onContextMenu: function (event) {...}
});
},
它工作正常。
为了在左键单击显示上下文菜单,我尝试了beforeSelectRow函数:
beforeSelectRow: function (rowid, e){
$("tr.jqgrow", this).contextMenu('contextMenu', {
bindings: {...},
onContextMenu: function (event) {...}
});
},
但它没有用!
有没有人知道如何在左键单击行时显示上下文菜单(或者可能选择行,它是相同的)?
提前致谢,
杰夫
答案 0 :(得分:1)
我建议您只将click
事件绑定到jquery.contextmenu.js
中定义的同一事件处理程序。为此,您可以使用以下代码
var cmenu = $grid.data('events').contextmenu;
if (cmenu && cmenu.length > 0) {
$grid.click(cmenu[0].handler);
}
我使用jquery.contextmenu.js
的固定版本,现在是jqGrid的一部分(请参阅我的建议here)。所以我将contextMenu
绑定到每个网格行,而不是直接绑定到网格元素。
The demo表明上述方法有效。如果您对contextmenu
事件使用其他绑定,则可以改进上面的代码,以选择正确的事件处理程序cmenu[i].handler
。
答案 1 :(得分:0)
尝试此代码,这基本上会触发右键单击。
beforeSelectRow: function (rowid, e){
console.log(this);
console.log(rowid);
$("tr.jqgrow", this).trigger({
type: 'mousedown',
which: 3
});
}
答案 2 :(得分:0)
以上的任何内容都不适用于我的版本的网格,如果工作那么糟糕。
最好的办法就是编辑\ trirand \ plugins \ jquery.contextmenu.js 文件,
寻找这一行
$(this).bind('contextmenu', function (e)
并更改或添加到您喜欢的任何内容,例如左键单击do:
$(this).bind('click', function (e)
双击执行
$(this).bind('dblclick', function (e)
这就像魅力一样: - )