php漂亮的树形下拉框,[转载]Ext扩展--树形下拉框

/**

* Ext JS Library 1.1 扩展

* 版本号:1.0测试版

* 作者:飞天色鼠

* 制作日期:2007年10月6日

* 电子邮箱:gx80@qq.com

* 主页:http://www.gx80.cn*//**

*树形下拉框*/Ext.form.TreeField=function(config){

config.readOnly=true;

Ext.form.TreeField.superclass.constructor.call(this, config);this.addEvents({

'select' :true,'expand' :true,'collapse' :true,'beforeselect':true});

}

Ext.extend(Ext.form.TreeField, Ext.form.TriggerField, {

hiddenName: undefined

,displayField : 'text'

,displayValue : undefined

,valueField: 'id'

,listAlign: 'tl-bl?'

,shadow:'sides'

,listClass: ''

,url:'http://www.gx80.cn/ajax/data/json/tree.do',rootText :'根节点'

,rootId:'-1'

,setValue :function(node){vartext=node[this.displayField];varvalue=node[this.valueField];if(this.hiddenField){this.hiddenField.value=value;

}

Ext.form.TreeField.superclass.setValue.call(this, text);this.value=value;

}

,getValue :function(){if(this.valueField){returntypeofthis.value!='undefined'?this.value : '';

}else{returnExt.form.TreeField.superclass.getValue.call(this);

}

}

,onSelect:function(node){if(this.fireEvent('beforeselect', node,this)!=false){this.setValue(node);this.collapse();this.fireEvent('select',this, node);

}

}

,createTree:function(el){vartree=newExt.tree.TreePanel(el,{

animate:true,

enableDD:true,

containerScroll:true,

loader:newExt.tree.TreeLoader({

dataUrl:this.url

})

});varroot=newExt.tree.AsyncTreeNode({

text:this.rootText,

draggable:false,

id:this.rootId

});

tree.setRootNode(root);

tree.render();returntree;

}

,onRender :function(ct, position){varvalue=this.value;

Ext.form.TreeField.superclass.onRender.call(this, ct, position);this.value=value;if(this.hiddenName){this.hiddenField=this.el.insertSibling({tag:'input', type:'hidden', name:this.hiddenName, id:  (this.hiddenId||this.hiddenName)},

'before',true);this.hiddenField.value=this.hiddenValue!==undefined?this.hiddenValue :this.value!==undefined?this.value : '';this.el.dom.removeAttribute('name');

}varcls='x-combo-list';this.list=newExt.Layer({

shadow:this.shadow, cls: [cls,this.listClass].join(' '), constrain:false});this.list.swallowEvent('mousewheel');this.innerList=this.list.createChild({cls:cls+'-inner'});vartree=this.createTree(this.innerList);vartreeField=this;

tree.on('click',function(node,e){

treeField.onSelect(node);

});this.tree=tree;var_id=this.value?this.value : '';var_text=this.displayValue?this.displayValue : '';varnode={id:_id,text:_text};this.setValue(node);

}

,onDestroy :function(){if(this.list){this.list.destroy();

}

Ext.form.TreeField.superclass.onDestroy.call(this);

}

,isExpanded :function(){returnthis.list.isVisible();

}

,collapse :function(){if(!this.isExpanded()){return;

}this.list.hide();

Ext.get(document).un('mousedown',this.collapseIf,this);

Ext.get(document).un('mousewheel',this.collapseIf,this);this.fireEvent('collapse',this);

}

,collapseIf :function(e){if(!e.within(this.wrap)&&!e.within(this.list)){this.collapse();

}

}

,expand :function(){if(this.isExpanded()){return;

}this.list.alignTo(this.el,this.listAlign);this.list.show();

Ext.get(document).on('mousedown',this.collapseIf,this);

Ext.get(document).on('mousewheel',this.collapseIf,this);this.fireEvent('expand',this);

}

,onTriggerClick :function(){if(this.disabled){return;

}if(this.isExpanded()){this.collapse();

}else{this.expand();

}this.el.focus();

}

});

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值