Ext.ns('Ext.my.form');
// TreeComboBox
(function() {
var createTreePanel = function(treeWidth, treeHeight, rootVisible, root) {
var treePanel = new Ext.tree.TreePanel( {
//id : 'treePanel-' + (++Ext.Component.AUTO_ID),
root : root,
rootVisible : rootVisible,
floating : true,
autoScroll : true,
renderTo : Ext.getBody(),
width : treeWidth || 230,
height : treeHeight || 250,
tbar:{},
bbar:{}
});
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() {
Ext.getCmp(treePanelId).root.removeAll(true);
Ext.getCmp(treePanelId).root
.appendChild(this.reader.jsonData.data);
};
return Ext.data.JsonStore.superclass.load.call(this, options);
}
})
return store;
}
Ext.my.form.TreeComboBox = Ext.extend(Ext.form.TwinTriggerField, {
initComponent : function() {
Ext.my.form.TreeComboBox.superclass.initComponent.call(this);
this.on('specialkey', function(f, e) {
if (e.getKey() == e.ENTER) {
this.onTrigger2Click();
}
}, this);
this.treePanel = createTreePanel(this.treeWidth, this.treeHeight,
this.rootVisible, this.root);
this.treePanel.on('hide', this.onTreeHide, this);
this.treePanel.on('show', this.onTreeShow, this);
this.treePanel.on('click', this.onTreeNodeClick, this);
//this.treePanel
// .on('collapsenode', this.onExpandOrCollapseNode, 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 : false,
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();
},
// private
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);
this.collapse();
},
onRender : function(ct, position) {
Ext.my.form.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');
}
}
});
})();
Ext.reg('treeComboBox', Ext.my.form.TreeComboBox);
new Ext.my.form.TreeComboBox({
storeRoot:"data",
renderTo:Ext.getBody(),
storeTotalProperty:"total",
dataUrl:"../Test/list.html",
root:new Ext.tree.TreeNode({
id:"Root",icon:"",text:"所有分類",leaf:false}),
fieldLabel:"選擇分類"})
后台数据
{"total":100,"data":
[
new Ext.tree.AsyncTreeNode({id:"9",icon:"",text:"aaa",
children:[
new Ext.tree.TreeNode({icon:"",text:"bbb",leaf:true})
],leaf:false}),
new Ext.tree.AsyncTreeNode({id:"1",icon:"",text:"aaa1",leaf:true}),
new Ext.tree.AsyncTreeNode({id:"2",icon:"",text:"aaa2",leaf:true})
]
}
分享到:
相关推荐
这个是model 代码如下: Ext.regModel(‘commemModel’, { fields : [ ‘name’, ‘id’ ] }); 定义一个store设置id为s1的容器的默认值是 第一季度 代码如下: var gjcx1 = new Ext.data.Store({ autoLoad:true, model...
ExtJS3 升级到 ExtJS4 方案 ExtJS3 升级到 ExtJS4 需要修改大量代码,主要是因为 ExtJS4 配备了一类新的系统,不向后兼容。在 ExtJS 3 里生成表的几个框架组件,ExtJS4 大多生成 div,这使得 CSS classes 将会失败...
ExtJS是一种广泛使用的JavaScript库,专门用于构建富客户端的Web应用程序。它提供了丰富的组件和工具,使得开发者可以创建出功能强大、用户界面友好的Web应用。在“extjs流程界面设计器参考”中,我们主要关注的是...
本书作为Extjs的中文教程,旨在帮助读者快速上手Extjs,其内容涉及Extjs的基础知识和实际应用。 #### 2. JavaScript基础知识 - **类的定义**: Extjs中的类继承于JavaScript原生类,通过Ext.extend来定义。这是...
ExtJS是一个广泛使用的JavaScript库,专门用于构建富客户端应用程序。版本3.3是该库的一个稳定版本,提供了许多功能和组件,使得Web开发者能够创建功能丰富的、交互性强的用户界面。这个“ExtJS3.3中文API.CHM”文档...
ExtJS 是一个流行的JavaScript框架,主要用于构建富客户端的Web应用程序。它提供了丰富的组件库、数据管理功能以及强大的用户界面(UI)元素。在标题和描述中提到的“Extjs4小图标”指的是ExtJS 4版本中使用的一系列...
ExtJS 是一个流行的JavaScript框架,用于构建富客户端的Web应用程序。它提供了丰富的用户界面组件、数据绑定机制和强大的API,使开发者能够创建功能强大的、响应式的桌面和移动应用。7.6版本是ExtJS的一个重要更新,...
ExtJS快速入门 ExtJS快速入门 ExtJS快速入门 ExtJS快速入门 ExtJS快速入门 ExtJS快速入门 ExtJS快速入门 ExtJS快速入门 ExtJS快速入门 ExtJS快速入门 ExtJS快速入门 ExtJS快速入门ExtJS快速入门 ExtJS快速入门 ExtJS...
ExtJS是一款功能强大的JavaScript前端框架,它为开发者提供了构建富客户端Web应用的工具。这款框架以其丰富的组件库、可定制的界面和强大的数据绑定机制而闻名。标题中的"ExtJS经典皮肤集合"指的是该框架中包含的一...
ExtJS是一种广泛使用的JavaScript库,专门用于构建富客户端Web应用程序。这个压缩包包含了ExtJS的两个重要版本:2.2和3.2.1。这两个版本在Web开发领域都有着广泛的运用,它们各自拥有不同的特性和改进,对于理解...
EXTJS 是一个强大的JavaScript前端框架,它主要用于构建富客户端应用,提供丰富的用户界面组件和灵活的可定制性。EXTJS 的核心在于其组件化的架构,允许开发者构建复杂的UI布局和功能丰富的应用程序。以下是对EXTJS...
【EXTJS 3.4 开发前准备】 EXTJS 是一款强大的JavaScript库,主要用于构建桌面级的Web应用程序,提供丰富的用户界面组件和交互效果。3.4版本是EXTJS的一个重要里程碑,它提供了稳定的基础和丰富的组件库。本文将...
ExtJS是一款强大的JavaScript库,主要用于构建富客户端的Web应用程序。其界面设计器,正如标题所示,是一种可视化的开发工具,能够极大地提升开发效率和用户体验。这个工具允许开发者通过拖放组件和直观地调整属性来...
EXTJS 6.2 SDK是EXT JavaScript库的一个版本,它是一个强大的前端开发框架,用于构建企业级的Web应用程序。EXTJS提供了丰富的组件库,包括数据管理、图表、表格、窗体和其他用户界面元素,使开发者能够创建功能丰富...
项目进行前端框架升级——extJS 4升级至extJS6.6所遇的一些问题及相对应的解决方案建议
extjsapi,extjs文档,api手岫
适用于ExtJS4、ExtJS5 MD5加密算法!
ExtJS是一种基于JavaScript的开源富客户端框架,用于构建桌面级的Web应用程序。它提供了一整套组件化的用户界面元素和强大的数据绑定机制,使得开发者能够创建功能丰富的、交互性强的Web应用。本文档集合包括了...
extjs电子书,extjs电子书,extjs电子书,extjs电子书
开始ExtJS之旅的第一步是要获得开发包,可以从官方网站www.ExtJS.com下载,以保证获 得最新版本。其下载地址是http://www.ExtJS.com/download,下载成功后的开发包是ExtJS- 2.0.2.zip,有6.08MB大。不过不用担心,这...