我正在尝试将动态创建的上下文菜单添加到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);
答案 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();
}