1

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

结果显示在 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;
        }
    }
    );
}

谢谢, 阿维纳什

4

1 回答 1

1

您可以使用onShowMenu回调contextMenu而不是静态绑定使用bindings. 以同样的方式,menuId用作的第一个参数contextMenu可以是id动态创建的带有空的 div 的<ul>。有onShowMenu形式

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

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

于 2013-05-14T14:25:02.840 回答