JQGrid ContextMenu - 动态菜单

时间:2013-05-14 12:03:22

标签: asp.net-mvc jqgrid contextmenu

我有一个页面,用于构建查询并针对不同的实体运行它们(查询构建器/通用搜索的种类)。

结果显示在JQGrid中,因此有效地使用相同的网格来渲染来自不同实体的结果。

此结果网格必须支持上下文菜单,每个实体的上下文菜单都不同。所以我需要一种方法来根据实体更改上下文菜单。每个实体在上下文菜单中可能具有不同数量的菜单项,并且每个项目可能以不同的方式响应(有时是警报,有时是在不同选项卡中生成的操作)。

渲染不同的菜单(通过li)不是问题,但将方法附加到li上证明是一个挑战。任何指针都将受到高度赞赏。

我正在使用jquery.contextmenu-ui.js。

以下是我从他们(JQGrid)网站上挑选的样本

function initGrid() {
    $("#EntityGrid").contextMenu('cMenu'
        ,{
        bindings: { /* I would like to avoid this and pass all the actions to one method*/
            'edit': function (t) {
                editRow();
            },
            'add': function (t) {
                addRow();
            },
            'del': function (t) {
                delRow();
            }
        },
        onContextMenu: function (event, menu) {
            var rowId = $(event.target).parent("tr").attr("id")
            var grid = $("#EntityGrid");
            grid.setSelection(rowId);
            return true;
        }
    }
    );
}

谢谢, 阿维纳什

1 个答案:

答案 0 :(得分:1)

您可以使用onShowMenu使用contextMenu回调,而不是使用bindings进行静态绑定。以同样的方式,menuId用作contextMenu的第一个参数可能是动态创建的div id,其中空<ul>onShowMenu的格式为

onShowMenu: function (e, $menu) {
    // here one can clear `<ul>` child of $menu
    // and append it with "<li>" items
    return $menu;
}

the answer中,您将找到动态构建菜单的代码示例。