最近使用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();//选中右键点击的节点
}