日期:2014-05-16  浏览次数:20435 次

Extjs Tree右键菜单问题
最近使用ExtJs组建开发 其中使用了TreePanel组建 现在想实现右键菜单功能
功能是可以实现的 但是有一些小BUG
代码如下:
JScript code

tree.on("contextmenu",function(node,e)
        {
            //node.select();
            //alert(node.id);
            e.preventDefault(); 
            var treeMenu = new Ext.menu.Menu
            ([
                {xtype:"button",text:"展开",icon:"resources/images/default/tree/folder-open.gif",pressed:true,handler:function(){node.expand(true,false)}},
                {xtype:"button",text:"收缩",icon:"resources/images/default/tree/folder.gif",pressed:true,handler:function(){node.collapse(true,true)}},
                {xtype:"button",text:"添加",icon:"resources/images/default/dd/drop-add.gif",pressed:true,handler:AddChildNode},
                {xtype:"button",text:"上移",icon:"resources/images/default/button/move-up.gif",pressed:true},
                {xtype:"button",text:"下移",icon:"resources/images/default/button/move-down.gif",pressed:true},
                {xtype:"button",text:"删除",icon:"resources/images/default/button/delete.gif",pressed:true}
                           
            ]);
            //定位菜单的显示位置
            treeMenu.showAt(e.getPoint());
        });




情况是这样的: (单击左键后) 选中了一个节点 然后单击右键会出现右键菜单 这样操作没有问题
但是此时我在右键点击另一个节点 这时右键菜单操作的对象还是上一个已经选中的节点 
也就是说function中的参数node指的是当前根据左键点击选中的节点 怎样在右键单击节点时选中它呢??
如果想这样的话难道要对每一个节点单独写contextmenu事件吗?
  总之问题是:怎样确定是对哪个节点点击了右键??? 初用不熟悉 往有经验的朋友指点

------解决方案--------------------
contextMenu: function(node, e) {
node.select();//选中右键点击的节点
}