浏览 7110 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-01-18
最后修改:2010-01-18
在JOffice的产品中,有很多功能的管理是基于树的,在树中需要能进行其节点的管理,如下所示:
因而为了实现该功能的方便性,抽取一个类来实现,代码如下所示: Ext.ns("htsoft.ux"); /** * @company 宏天软件有限公司 * @createtime 2010-01-02 * @author csx * @class TreePanelEditor * @extends Ext.tree.TreePanel * @description 树菜单编辑器,可带右键操作菜单,使用方式示例见ArchiveTypeTempView.js */ htsoft.ux.TreePanelEditor=Ext.extend(Ext.tree.TreePanel,{ showContextMenu:true, url:null, /** * 右键菜单 * @type */ contextMenu:null, /** * 右键菜单项 * @type */ contextMenuItems:null, /** * 选择树节点 * @type */ selectedNode:null, /** * 构造函数 */ constructor:function(_cfg){ if(_cfg==null){ _cfg={}; } Ext.apply(this,_cfg); //从父类中拷贝构造 htsoft.ux.TreePanelEditor.superclass.constructor.call(this,{ tbar:new Ext.Toolbar({items:[ { xtype : 'button', iconCls : 'btn-refresh', text : '刷新', handler : function() { Ext.getCmp(_cfg.id).root.reload(); } },{ xtype : 'button', text : '展开', iconCls : 'btn-expand', handler : function() { Ext.getCmp(_cfg.id).expandAll(); } }, { xtype : 'button', text : '收起', iconCls : 'btn-collapse', handler : function() { Ext.getCmp(_cfg.id).collapseAll(); } } ]}), loader : new Ext.tree.TreeLoader({ url:this.url }), root : new Ext.tree.AsyncTreeNode({ expanded : true }), rootVisible : false }); //初始化右键的菜单 this.initContextMenu(); },//end of constructor // initComponent: function(){ // htsoft.ux.TreePanelEditor.superclass.initComponent.call(this); // }, /** * 右键菜单 */ initContextMenu:function(){ if(this.showContextMenu){ this.contextMenu= new Ext.menu.Menu({}); if(this.contextMenuItems!=null){ this.contextMenu.add(this.contextMenuItems); } //树的右键菜单的 this.on('contextmenu', this.contextHandler, this); } }, contextHandler:function contextmenu(node, e) { this.selectedNode = new Ext.tree.TreeNode({ id : node.id, text : node.text }); this.contextMenu.showAt(e.getXY()); } }); Ext.reg("treePanelEditor",htsoft.ux.TreePanelEditor);
使用如下所示: { xtype:'treePanelEditor', id:'archivesTypeTree', region : 'west', title:'公文分类', collapsible : true, split : true, width:200, url:__ctxPath+'/archive/treeArchivesType.do', contextMenuItems:[ { text : '新建分类', scope : this, iconCls:'btn-add', handler : function(){ new ArchivesTypeForm().show(); } }, { text : '修改分类', scope : this, iconCls:'btn-edit', handler: function(){ new ArchivesTypeForm({typeId:Ext.getCmp('archivesTypeTree').selectedNode.id}).show(); } },{ text : '删除分类', scope : this, iconCls:'btn-delete', handler : function(){ var typeId=Ext.getCmp('archivesTypeTree').selectedNode.id; Ext.Ajax.request({ url:__ctxPath+'/archive/multiDelArchivesType.do', params:{ids:typeId}, method:'POST', success:function(response,options){ Ext.ux.Toast.msg('操作信息','成功删除该公文分类!'); Ext.getCmp('archivesTypeTree').root.reload(); }, failure:function(response,options){ Ext.ux.Toast.msg('操作信息','操作出错,请联系管理员!'); } }); } } ] } 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2010-01-22
EXT3是否为收费版,若收费的话还有什么研究的意义呢?
|
|
返回顶楼 | |
发表时间:2010-01-22
感觉JOffice点击菜单加载页面时好慢
|
|
返回顶楼 | |
发表时间:2010-01-23
臃肿的EXT
|
|
返回顶楼 | |
发表时间:2010-02-24
如果能把源码发上来供下载更好。。。呵呵
|
|
返回顶楼 | |
发表时间:2010-05-21
LZ能否共享源码~
|
|
返回顶楼 | |
发表时间:2010-05-23
LeeHomWong 写道 LZ能否共享源码~ 楼主发的不都是源码吗?你不是想叫人家把自己产品都开源了吧 Ext收费的问题请研究根目录下的GPL协议。 感谢楼主共享,个人认为handler那一块还是可以进一步封装的 |
|
返回顶楼 | |