六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 35|回复: 0

Ext树操作事例

[复制链接]

升级  10.67%

14

主题

14

主题

14

主题

秀才

Rank: 2

积分
66
 楼主| 发表于 2013-1-29 10:51:15 | 显示全部楼层 |阅读模式
Ext树结构通过右键菜单进行操作的一个事例,供以后应用参考。
 
 
/** * @description 组织架构主页面 * @date   2010-6-10 * @version 1.0 *  *///定义命名空间Ext.ns("Rosy.department");/** * 组织架构树状面板 * @class Rosy.department.DepartmentTreePanel * @extends Ext.tree.TreePanel */Rosy.department.DepartmentTreePanel = Ext.extend(Ext.tree.TreePanel,{// 构造方法constructor:function(){// 构造组件Rosy.department.DepartmentTreePanel.superclass.constructor.apply(this,[{//renderTo: Ext.getBody(),    useArrows: true,    autoScroll: true,    animate: true,    enableDD: true,    containerScroll: true,    border: false,    id:'departmentTreePanel',    region: 'center',    margins: '2 2 0 2',    width: 300,       loader: new Ext.tree.TreeLoader({dataUrl : '/mrp/treeDept.action',listeners:{         "beforeload":function(treeLoader,node) {   treeLoader.baseParams.departmentId=      (node.id!="01"?node.id:"01");                    }        }}),     root: new Ext.tree.AsyncTreeNode({                text: '组织架构',                   draggable:false,                    id:'01'              }) ,            listeners:{            'click':function(node,event){            // 加载节点信息                getNodeDetail(node);            },        'dblclick' : function(node, event) {if (node.isLeaf()) {// 为叶子节点时,点击不进入链接createTreeEditor().triggerEdit(node);}},                    //右键        "contextmenu":function(node, e){                var menu = createMenu(node);//alert(e.getPoint());menu.showAt(e.getPoint());                     },        //节点文本改变时        "textchange":function(node, newText, oldText) {        if(newText!=oldText){        editTreeItem(node,newText);        }                    },// 当节点移动时触发事件"movenode": function(tree, node,oldParent, newParent, index) {moveTreeNode(node, oldParent, newParent, index);}            }}])}})/** * 树节点编辑 * @return {} */function createTreeEditor(){var treePanel = Ext.getCmp('departmentTreePanel');var treeEditor = new Ext.tree.TreeEditor(treePanel, {allowBlank : false,ignoreNoChange : true,selectOnFocus : true});return treeEditor;}/** * 创建菜单 */function createMenu(nodeSelected){var leafMenu = new Ext.menu.Menu({items : [{text : "添加",handler : function() {var addDeptWindow = new Rosy.department.DepartmentAddWindow(nodeSelected);addDeptWindow.show();}},"-",{text : "修改",handler : function() {//createTreeEditor().triggerEdit(nodeSelected);var editDeptWindow = new Rosy.department.DepartmentEditWindow(nodeSelected);loadEditNode(nodeSelected);editDeptWindow.show();}},"-", {text : "删除",handler : function(){deleteTreeItem(nodeSelected);}}]});return leafMenu;}/** * 获取部门信息 * @param {} nodeSelected */function  getNodeDetail(nodeSelected){var tpl = new Ext.Template(               '<p  style="font-size:12px"><b>部门ID</b>:  {deptId}</p>',        '<p  style="font-size:12px"><b>部门名称</b>: {deptName}</p>',        '<p  style="font-size:12px"><b>部门描述</b>: {deptDesc}</p>');    tpl.compile();var store = new Ext.data.Store({   url:  '/mrp/loadDept.action?deptId='+nodeSelected.id,     reader:new Ext.data.JsonReader({root:"pubDept",id:'deptId'},    Ext.data.Record.create([     {name:"deptId" ,mapping: 'deptId'},     {name:"deptName" ,mapping: 'deptName'},    {name:"deptDesc" ,mapping: 'deptDesc'}    ])   )});// store加载后触发store.load({callback:function(records,options,success){    if(success == true){           var el = Ext.getCmp('departmentDetailsPanel').body;               tpl.overwrite(el, store.getAt(0).data);       }else{     Ext.Msg.alert('提示','数据获取出错');    }}});}/** * 加载部门信息 * @param {} nodeSelected */function  loadEditNode(nodeSelected){var store = new Ext.data.Store({   url:  '/mrp/loadDept.action?deptId='+nodeSelected.id,     reader:new Ext.data.JsonReader({root:"pubDept",id:'deptId'},    Ext.data.Record.create([     {name:"pubDept.deptId" ,mapping: 'deptId'},     {name:"pubDept.deptNameZh" ,mapping: 'deptName'},    {name:"pubDept.deptDescZh" ,mapping: 'deptDesc'}    ])   )});// store加载后触发store.load({callback:function(records,options,success){    if(success == true){     Ext.getCmp('departmentEditPanel').getForm()     .loadRecord(records[0]);              }else{     Ext.Msg.alert('提示','数据获取出错');    }}});}/** * 删除树结点 * @param {} nodeSelected */function deleteTreeItem(nodeSelected){var treePanel = Ext.getCmp('departmentTreePanel');Ext.Msg.confirm("确认删除", "确定要删除所选节点吗?", function(btn) {if (btn == "yes") {if (nodeSelected != treePanel.getRootNode()) {Ext.Ajax.request({   url: '/mrp/delDept.action',   success: function(){   Ext.MessageBox.alert('提示', '删除部门成功.',function(){     var parentNode = nodeSelected.parentNode;   nodeSelected.remove();   if(!parentNode.hasChildNodes()){   parentNode.parentNode.reload();   }   });      },   failure: function(){   Ext.MessageBox.alert('提示', '删除部门出错.');   },     params: { deptId: nodeSelected.id}});} else {Ext.Msg.alert("警告", "不能删除树的根节点!");}}});}/** * 修改树结点 * @param {} nodeSelected */function editTreeItem(nodeSelected,nodeText){Ext.Ajax.request({   url: '/mrp/editDept.action',   success: function(){    },   failure: function(){   Ext.MessageBox.alert('提示', '修改部门出错.');   },     params: { 'pubDept.deptNameZh': nodeText,    'pubDept.deptId': nodeSelected.id}});}/** * 移动树结点 * @param {} node * @param {} oldParent * @param {} newParent * @param {} index */function moveTreeNode(node, oldParent, newParent, index){Ext.Ajax.request({   url: '/mrp/moveDept.action',   success: function(){    },   failure: function(){   Ext.MessageBox.alert('提示', '移动部门节点出错.');   },     params: { 'deptId': node.id,    'oldParentId': oldParent.id,    'newParentId': newParent.id,    'nodeIndex': index}});} 
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表