iteye_165 2010-04-22 16:53
浏览 200
已采纳

extjs tree如何为每个节点定制各自的右键菜单?

我的web应用中有一个extjs做的树形菜单。我如何为每个树节点定制各自的右键菜单呢?如图那样。我在第一层树显示部门名称时只显示 (新增部门,编辑部门,删除部门,新增组别),第二层显示组别名称时右键菜单只显示(新增组别,编辑组别,删除组别,新增职务)这个几个右键菜单,在第三层显示职务时只显示(新增职务,编辑职务,删除职务)这几个右键菜单。这样应该如何做呢?
我的代码如下:
[code="java"]
var selected;
var loader=new Ext.tree.TreeLoader({
dataUrl:'<?php echo $this->baseUrl();?>/department/tree',
uiProviders:{'col': Ext.tree.ColumnNodeUI}
});
var tree = new Ext.tree.ColumnTree({
rootVisible:false,autoScroll:true,bodyStyle:'padding-left:5px;',
title: '部門管理(提示:在列表上面點擊右鍵可以操作部門,組別和職務資料)',renderTo: 'tree',
columns:[{
header:'名稱',
width:330,

dataIndex:'name'
},{
header:'編號',
width:100,
dataIndex:'number'
},{
header:'负责人',
width:300,
dataIndex:'header'
}],
loader:loader,
root: new Ext.tree.AsyncTreeNode({
id: '-100',icon:'<?php echo $this->baseUrl();?>/html/images/house.png',
text: '部門管理'
})
});

tree.on("contextmenu", function(node, e){
    e.preventDefault();
    node.select();
    selected=new Ext.tree.TreeNode({ id:node.id});
    contextmenu.showAt(e.getXY());
},this);       
var contextmenu = new Ext.menu.Menu({
    id: 'theContextMenu',
    items: [
        {xtype:"button",text:"新增部門",iconCls:"add",pressed:true,handler:addNewDepartment},
        {xtype:"button",text:"編輯部門",iconCls:"edit",pressed:true,handler:editDepartment},
        {xtype:"button",text:"刪除部門",iconCls:"delete",pressed:true,handler:deleteDepartment},
        {xtype:"button",text:"新增組別",iconCls:"add",pressed:true,handler:addGroup},
        {xtype:"button",text:"編輯組別",iconCls:"edit",pressed:true,handler:editGroup},
        {xtype:"button",text:"刪除組別",iconCls:"delete",pressed:true,handler:deleteGroup},
        {xtype:"button",text:"新增職務",iconCls:"add",pressed:true,handler:addDuty},
        {xtype:"button",text:"編輯職務",iconCls:"edit",pressed:true,handler:editDuty},
        {xtype:"button",text:"刪除職務",iconCls:"delete",pressed:true,handler:deleteDuty}
    ]
});

[/code]

  • 写回答

2条回答 默认 最新

  • zhoujuan520 2010-04-22 21:01
    关注

    把Menu对象和MenuItem对象分别定义,然后再组装成菜单,在右键单击事件中判断隐藏不同的MenuItme对象,调用某一个菜单节点的hide();方法达到隐藏效果

    另外建议你看api创建Action对象也就是菜单的节点对象,也是分别创建,Action对象应该是菜单节点对象的父类,不要隐藏某个菜单,而是让某个菜单项不可用disabled();这样是最好的解决办法.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 FPGA-SRIO初始化失败
  • ¥15 MapReduce实现倒排索引失败
  • ¥15 ZABBIX6.0L连接数据库报错,如何解决?(操作系统-centos)
  • ¥15 找一位技术过硬的游戏pj程序员
  • ¥15 matlab生成电测深三层曲线模型代码
  • ¥50 随机森林与房贷信用风险模型
  • ¥50 buildozer打包kivy app失败
  • ¥30 在vs2022里运行python代码
  • ¥15 不同尺寸货物如何寻找合适的包装箱型谱
  • ¥15 求解 yolo算法问题