/**
* 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();
}
});