2013-05-14 112 views
1

我有一个页面,用于构建查询并针对不同实体(查询生成器的类型/通用搜索)运行它们。JQGrid ContextMenu - 动态菜单

结果显示在jqGrid的,所以实际上是相同的电网将被用于从不同的实体渲染的结果。

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

渲染不同的菜单(通过立)不是一个问题,但附加该方法对李被证明是一个挑战。任何指针将高度赞赏。

我使用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

可以使用contextMenu,而不是静态绑定使用bindingsonShowMenu回调。以同样的方式,用作contextMenu的第一个参数的menuId可以是动态创建的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,你会发现它动态地构建菜单的代码示例。