2013-05-14 59 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,你會發現它動態地構建菜單的代碼示例。