在JQGrid中如何在左键单击时显示上下文菜单?

时间:2012-01-24 16:17:11

标签: jquery jqgrid contextmenu

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) {...}
            });
        },

但它没有用!

有没有人知道如何在左键单击行时显示上下文菜单(或者可能选择行,它是相同的)?

提前致谢,

杰夫

3 个答案:

答案 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)

这就像魅力一样: - )