/** * 韩飞 * * @class TreeSelector * @extends Ext.form.ComboBox */ TreeSelector = Ext.extend(Ext.form.ComboBox, { /** * 回调函数,用于传递选择的id,text属性 * * @type */ callback : Ext.emptyFn, store : new Ext.data.SimpleStore({ fields : [], data : [[]] }), editable : false, mode : 'local', emptyText : "请选择部门", allowBlank : false, blankText : "必须输入!", triggerAction : 'all', maxHeight : 200, anchor : '95%', displayField : 'text', valueField : 'id', tpl : "<tpl for='.'><div style='height:200px'><div id='tree'></div></div></tpl>", selectedClass : '', onSelect : Ext.emptyFn, /** * 根的名字 * * @type String */ rootText : '组织机构', /** * 树的请求地址 * * @type String */ treeUrl : 'system/organization/loadOrganizationTrees.action', tree : null, initComponent : function() { this.tree = new Ext.tree.TreePanel({ height : 200, scope : this, autoScroll : true, split : true, root : new Ext.tree.AsyncTreeNode({ expanded : true, id:'o', text : this.rootText }), loader : new Ext.tree.TreeLoader({ url : this.treeUrl }), rootVisible : true // , /* * listeners : { scope : this, 'click' : function(node) {// 单击事件 * if (node.id != null && node.id != '') { * * this.callback.call(this, node.id, node.text); * * this.collapse(); * } } } */ }); var c = this; /** * 点击选中节点并回调传值 */ this.tree.on('click', function(node) { if (node.id != null && node.id != '') { if (node.id != 'o') { c.callback.call(this, node.id, node.text); c.collapse(); }else{ Ext.Msg.alert("提示","此节点无效,请重新选择!") } } }) this.on('expand', function() { this.tree.render('tree'); this.tree.expandAll(); }); TreeSelector.superclass.initComponent.call(this); } })
使用方法 new TreeSelector({callback:function(){ }})