treecombobox.js
// JavaScript Document
Ext.namespace('Ext.ux');
(function() {
var createTreePanel = function(treeWidth, treeHeight, rootVisible, root) {
var treePanel = new Ext.tree.TreePanel({
root : root,
rootVisible : rootVisible,
floating : true,
autoScroll : true,
renderTo : Ext.getBody(),
width : treeWidth || 150,
height : treeHeight || 250
});
return treePanel;
}
var createStore = function(treePanelId,storeBaseParams, storeMethod,dataUrl, storeRoot, storeTotalProperty) {
var store = new Ext.data.JsonStore( {
proxy : new Ext.data.HttpProxy( {
method : storeMethod || 'GET',
url : dataUrl
}),
baseParams : storeBaseParams || {
query : '',
start : 0
},
root : storeRoot || 'data',
totalProperty : storeTotalProperty || "total",
fields : [0],
autoLoad : false,
load : function(options) {
options.callback = function() {
var TreeJsonRoot='data';
if(storeRoot!=undefined && storeRoot.length>0) TreeJsonRoot=storeRoot;
Ext.getCmp(treePanelId).root.removeAll(true);
if(storeRoot!=undefined && storeRoot.length>0){
Ext.getCmp(treePanelId).root.appendChild(this.reader.jsonData);
}else{
Ext.getCmp(treePanelId).root.appendChild(this.reader.jsonData[TreeJsonRoot]);
}
};
return Ext.data.JsonStore.superclass.load.call(this, options);
}
})
return store;
}
Ext.ux.TreeComboBox = Ext.extend(Ext.form.TwinTriggerField,{
initComponent : function() {
Ext.ux.TreeComboBox.superclass.initComponent.call(this);
this.on('specialkey', function(f, e) {
if (e.getKey() == e.ENTER) {
this.onTrigger2Click();
}
}, this);
//this.on('keydown',this.filterTree,this);
this.treePanel = createTreePanel(this.treeWidth, this.treeHeight,this.rootVisible, this.root);
//this.treePanel.hiddenPkgs=[];
this.treePanel.on('hide', this.onTreeHide, this);
this.treePanel.on('show', this.onTreeShow, this);
this.treePanel.on('click', this.onTreeNodeClick, this);
this.store = createStore(this.treePanel.id, this.storeBaseParams,
this.storeMethod, this.dataUrl, this.storeRoot,
this.storeTotalProperty);
/* this.treePanel.getTopToolbar().addItem(new Ext.ux.form.SearchField( {
width : this.treeWidth ? this.treeWidth : 220,
store : this.store
}));*/
//this.treePanel.getBottomToolbar().addItem(new Ext.PagingToolbar({store:this.store}));
this.resizer = new Ext.Resizable(this.treePanel.id, {
handles : 'se',
minWidth : 100,
minHeight : 80,
pinned : true
});
this.mon(this.resizer, 'resize', function(r, w, h) {
this.treePanel.setSize(w, h);
//this.treePanel.getTopToolbar().get(0).setSize(w - 10, 18);
}, this);
},
trigger1Class : 'x-form-clear-trigger',
onTrigger1Click : function() {
this.setRawValue('');
this.setHiddenValue('');
},
onTrigger2Click : function() {
this.treePanel.show();
this.treePanel.getEl().alignTo(this.wrap, 'tl-bl?');
},
editable : true,
storeAutoLoad : true,
frstLoad : true,
onTreeShow : function() {
Ext.getDoc().on('mousewheel', this.collapseIf, this);
Ext.getDoc().on('mousedown', this.collapseIf, this);
if (this.storeAutoLoad && this.frstLoad) {
this.store.load( {});
this.frstLoad = false;
}
},
onTreeHide : function() {
Ext.getDoc().un('mousewheel', this.collapseIf, this);
Ext.getDoc().un('mousedown', this.collapseIf, this);
},
collapseIf : function(e) {
if (!e.within(this.wrap) && !e.within(this.treePanel.getEl())) {
this.collapse();
}
},
collapse : function() {
this.treePanel.hide();
},
showTree : function() {
this.treePanel.show();
},
validateBlur : function() {
return !this.treePanel || !this.treePanel.isVisible();
},
setValue : function(v) {
this.setRawValue(v);
},
getValue : function() {
return this.getRawValue();
},
setHiddenValue : function(v) {
return this.hiddenField.value = v;
},
getHiddenValue : function() {
return this.hiddenField.value;
},
getHiddenId : function() {
return this.hiddenField.id;
},
onTreeNodeClick : function(node, e) {
this.setRawValue(node.text);
this.hiddenField.value = node.id
this.fireEvent('select', this, node);
if(this.emptyShow){
if(this.getValue()!=''){
this.collapse();
}
}else{
this.collapse();
}
},
onRender : function(ct, position) {
Ext.ux.TreeComboBox.superclass.onRender.call(this, ct,
position);
if (!this.hiddenField) {
this.hiddenField = this.getEl().insertSibling( {
tag : 'input',
type : 'hidden',
name : this.name,
value : this.hiddenValue,
id : (this.hiddenId || this.name)
}, 'before', true);
this.getEl().dom.removeAttribute('name');
}
},
filterTree: function(t, e){
var text = t.getValue();
Ext.each(this.treePanel.hiddenPkgs, function(n){
n.ui.show();
});
if(!text){
this.treePanel.filter.clear();
return;
}
this.treePanel.expandAll();
var re = new RegExp('^' + Ext.escapeRe(text), 'i');
this.treePanel.filter.filterBy(function(n){
return !n.attributes.isClass || re.test(n.text);
});
// hide empty packages that weren't filtered
this.treePanel.hiddenPkgs = [];
var me = this.treePanel;
this.treePanel.root.cascade(function(n){
if(!n.attributes.isClass && n.ui.ctNode.offsetHeight < 3){
n.ui.hide();
me.hiddenPkgs.push(n);
}
});
}
});
})();
Ext.reg('treecombobox',Ext.ux.TreeComboBox);
//调用
xtype:'treecombobox',
name:'corp',
id:'Name',
storeRoot:"data",
storeTotalProperty:"total",
dataUrl:"/ah/tree",
root:new Ext.tree.TreeNode({
}),
listeners:{
"select":function(node,e){
}
}
分享到:
相关推荐
Linux一些工作上用到的命令记录 Linux一些工作上用到的命令记录 Linux一些工作上用到的命令记录 Linux一些工作上用到的命令记录 Linux一些工作上用到的命令记录 Linux一些工作上用到的命令记录 Linux一些工作上用到...
若依(一):在CentOS中从零部署若依项目(ruoyi-vue、前后端分离)过程记录,该博客里需要用到的工具。 若依(一):在CentOS中从零部署若依项目(ruoyi-vue、前后端分离)过程记录,该博客里需要用到的工具 若依...
C#调用vlc播放器所用到的库(libvlc) C#调用vlc播放器所用到的库(libvlc) C#调用vlc播放器所用到的库(libvlc) C#调用vlc播放器所用到的库(libvlc) C#调用vlc播放器所用到的库(libvlc) C#调用vlc...
这是一个挺简单的VC++初学者实例,没有太多高难度的代码,纯粹操作数据库的一些基础知识,像移动数据集,在平时的编程中也是经常用到的,点击窗体内的按钮,可以向上、向下、回到第一条记录以及回到最后一条记录的...
struts2开发需要用到的jar包
在项目检查记录中,可能涉及到了读取和写入文档(如C-01B苗木实测项目检查记录表.doc),这需要用到标准I/O库中的fopen、fread、fwrite、fprintf和fclose等函数。 3. **数据结构**:如果这个项目涉及数据记录和管理...
平常用到的一些调试的基本命令,包括断点,查看帧,bt等。
工程模板,参考使用,欢迎下载
4. 多线程:如果程序需要在管理聊天记录的同时保持QQ在线,那么多线程技术就会被用到,以确保用户界面的响应性和数据处理的高效性。 5. 网络通信:虽然题目描述中没有明确提到,但若要实现更完整的聊天记录管理,...
3D项目函数需要用到的在线函数计算器3D项目函数需要用到的在线函数计算器3D项目函数需要用到的在线函数计算器3D项目函数需要用到的在线函数计算器3D项目函数需要用到的在线函数计算器3D项目函数需要用到的在线函数...
一次会议记录,用到了Axure工具,算是一次积累吧。。小白入门。
js需要用到的jquery
一个安卓的跑步软件的开发实例具有实时记录速度画出跑步路径管理跑步数据履历查看数据详细等一些功能。用到了GoogleService等资源包。地图无法显示的话请自行申请GoogleMapApiKey.rar,太多无法一一验证是否可用,...
回调函数会记录下鼠标事件的类型、位置、按钮状态等信息,并将这些数据存储到合适的数据结构中,例如链表或数组。 接着,我们讨论“回放”部分。回放过程是根据记录的数据,重新模拟这些鼠标动作。这通常涉及解析...
EZReplayManager V1.5.3是一款用于Unity3D的回放插件,unity3D做开发的时候可以用到的插件。EZReplayManager主要运用在游戏或者仿真软件中,用于记录视频回放,可以回放的是位置信息、旋转信息和粒子效果等。 本人...
delphi人才信息管理系统源码分享,有用到的朋友拿去 delphi人才信息管理系统源码分享,有用到的朋友拿去 delphi人才信息管理系统源码分享,有用到的朋友拿去 delphi人才信息管理系统源码分享,有用到的朋友拿去...
学习浙大版C语言程序设计(第三版)用到的代码学习浙大版C语言程序设计(第三版)用到的代码学习浙大版C语言程序设计(第三版)用到的代码学习浙大版C语言程序设计(第三版)用到的代码学习浙大版C语言程序设计(第...
ORL人脸识别不同算法的实现,用到了scikit-learn,tensorflow等 ORL人脸识别不同算法的实现,用到了scikit-learn,tensorflow等 ORL人脸识别不同算法的实现,用到了scikit-learn,tensorflow等 ORL人脸识别不同算法的...
C#开发经常用到的,常用的函数以及后台处理代码等,源代码 C#开发经常用到的,常用的函数以及后台处理代码等,源代码 C#开发经常用到的,常用的函数以及后台处理代码等,源代码 C#开发经常用到的,常用的函数以及...