动态添加上下文菜单到Ext.tree.TreePanel

时间:2015-12-03 21:48:37

标签: extjs tree contextmenu

我正在尝试将动态创建的上下文菜单添加到Ext.tree.TreePanel对象中。菜单将根据用户选择而有所不同。

我可以在treePanel描述符之外创建菜单,但是如何将动态创建的菜单附加到Ext.tree.TreePanel?文档似乎表明treePanel.on(nameOfMenuHere)将附加菜单,但它返回为undefined。

     var menu1 = new Ext.menu.Menu({
     id: 'menu1',
         items: [{
             id: 'menu1-item1',
             text: 'Menu 1 - Item 1'
         }, 
                    {
                    id: 'menu1-item2',
                    text: 'Menu 1 - Item 2'
                }],
                listeners: {
                  itemclick: function (item) {
                     switch (item.id) {
                       case 'menu1-item1':
                          var n = item.parentMenu.contextNode;
                         if (n.parentNode) {
                alert(n.parentNode.text); 
                alert("node ID: " + n.id + ", node text: " + n.text); //Ext ID and text of selected node
                   } 
                    break;
            }
        } 
    }
}); 

userLayerTree.on(menu1);

1 个答案:

答案 0 :(得分:1)

使用树面板中的监听器itemcontextmenu。这样的事情应该有效。

var tpanel = {
    xtype : 'treepanel',
    width: 250,
.........
..........
listeners : {
        itemcontextmenu: showLyrContextMenu
        }
}

然后创建创建和显示菜单的功能

function showLyrContextMenu(view, record, item, index, event){
lyrTreeContextMenu =  new Ext.menu.Menu({
      id : 'lyrcontxtmenu',
      .......
     items: items
      });
      lyrTreeContextMenu.showAt(event.getXY());
      event.stopEvent();
}