在做OECP平台的登陆页面时,需要选择相应的公司进行登陆,公司的选择是树形结构的,而extjs的下拉combobox为列表结构,为了让页面操作更加简单,决定将下拉列表改造成下拉树。
在这里主要用到了Extjs的extend的语法,扩展比较简单,直接上代码吧。
js 代码
- Ext.ns("OECP.ui");
-
-
-
-
-
-
-
-
- OECP.ui.ComboBoxTree = Ext.extend(Ext.form.ComboBox, {
-
-
-
-
-
- callback : Ext.emptyFn,
- store : new Ext.data.SimpleStore({
- fields : [],
- data : [[]]
- }),
- editable : this.editable||false,
- mode : 'local',
- emptyText : this.emptyText||"请选择",
- allowBlank : this.allowBlank||true,
- blankText : this.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,
-
-
-
-
-
- rootText : this.rootText||'root',
-
-
-
-
-
- treeUrl : this.treeUrl,
- 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 : '_oecp',
- text : this.rootText
- }),
-
- loader : new Ext.tree.TreeLoader({
- url : this.treeUrl
-
- }),
- rootVisible : true
- });
- var c = this;
-
-
-
- this.tree.on('click', function(node) {
- if (node.id != null && node.id != '') {
- if (node.id != '_oecp') {
- c.setValue(node.text);
- 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();
- });
-
- OECP.ui.ComboBoxTree.superclass.initComponent.call(this);
- }
-
- })
在页面上如下使用:xhtml 代码
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
- <html>
- <head>
- <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
- <title>ComboBoxTree.html</title>
- <link rel="stylesheet" type="text/css"
- href="../../extjs/resources/css/ext-all.css" />
- <script type="text/javascript"
- src="../../extjs/adapter/ext/ext-base.js"></script>
- <script type="text/javascript" src="../../extjs/ext-all.js"></script>
- <script type="text/javascript" src="../core/ComboBoxTree.js"></script>
- </head>
-
- <body>
- <div id="cbt"></div>
- </body>
- </html>
- <script type="text/javascript">
- Ext.onReady(function() {
- new OECP.ui.ComboBoxTree({
- renderTo:"cbt",
- treeUrl:"ComboBoxTree.json",
- editable:false,
- rootText:"选择公司",
- valueField:"com",
- displayField:"_com",
- callback:function(id,text){
- alert(id);
- alert(text);
- //可以做更多的处理。
- }
- });
- })
- </script>
附件中包含了该组件源代码和一个demo。
OECP平台正在研发之中,在第一个稳定版本发布的时候,将开放相关的API。
相关的API,可参见:http://prj.oecp.cn/projects/oecp-platform/wiki/OECPuiComboBoxTree
分享到:
相关推荐
在EXTJS4中,实现一个下拉树(Combobox Tree)并支持多选和复选功能,主要是通过自定义组件(Ext.define)来完成的。这个组件继承自EXTJS的Picker字段(Ext.form.field.Picker),并添加了树形结构和复选功能。以下...
在EXTJS4中,下拉菜单树(ComboBox+Tree)是一种高级UI组件,它结合了ComboBox的下拉选择框和TreePanel的树形结构,提供了一种用户友好的交互方式,用于展示层次化的数据。这种组件特别适用于需要从多个选项中进行...
5. **数据绑定**:在创建下拉多选树时,需要为树的store绑定数据源。数据源可以是JSON对象、XML文件或者远程服务器数据,通过Ext.data.TreeStore进行管理。 6. **模板和渲染**:为了在下拉框中正确显示树节点,需要...
在这个特定的情况下,我们讨论的是一个定制的下拉树菜单控件——ComboBoxTree,它在ExtJS4中实现了单选和多选功能,并且具备展开选中指定节点的能力。这个控件在实际项目中已经被广泛使用并证明了其稳定性和实用性,...
Extjs自定义组件—下拉树,不仅提升了用户体验,也展现了Extjs框架的强大扩展能力。通过本文的详细介绍,开发者可以掌握其实现细节,为自己的项目增添一个实用且美观的组件。无论是初学者还是经验丰富的开发者,都...
在ExtJS中,下拉列表(Combobox)是常见的组件之一,它结合了输入框和下拉菜单的功能,允许用户进行选择或自由输入。本教程将深入探讨ExtJS中的Combobox组件,包括其基本用法、配置选项、事件处理和自定义功能。 1....
ExtJS下拉树是一种在Web应用中常用的交互组件,它结合了下拉框和树形结构的优点,使得用户可以在一个紧凑的空间内选择嵌套层次的数据。这种组件在数据层级较多,需要用户进行逐级选择或者查看层级关系时非常实用。在...
7. **扩展控件**:可能需要创建一个新的组件类,继承自`Ext.form.field.ComboBox`,并覆盖或扩展其默认行为,以实现下拉树的功能。 8. **配置项**:例如,`displayField`定义显示字段,`valueField`定义值字段,`...
标题中的“ExtJS下拉列表树控件1”指的是在ExtJS框架中使用的一种特殊的下拉选择组件,它不仅具备了传统的下拉列表功能,还集成了树形结构,允许用户在下拉菜单中选择嵌套层次的数据。这种控件在处理具有层级关系的...
### ExtJs4 实现下拉树选择框 ComboTree #### 概述 在现代Web应用开发中,ExtJS 是一个非常强大的JavaScript库,用于构建复杂的客户端应用程序。它提供了丰富的组件库,使得开发者能够轻松地创建出功能丰富且交互性...
在ExtJS6中,下拉列表(ComboBox)是一种常见的组件,用于提供用户可以选择的预定义选项。这个框架提供了丰富的功能和定制性,使得下拉列表不仅能够简单地显示一组静态选项,还能与数据源进行联动,展示动态加载的...
同时,还需要配置`mode`为`EXTJS4`特有的`EXTJS4`模式,以启用树结构的多选功能。 3. **数据源与模型** 数据源通常通过`store`属性指定,可以是本地数据或者远程加载的数据。对于树形结构,需要使用`TreeStore`,...
下拉树结合了ExtJS的ComboBox和TreePanel的功能,它不仅可以下拉显示列表项,还能够以树形结构的方式展示层级数据,允许用户通过树形结构选择一个或多个节点。 在文章中提供了一个ExtJS下拉树组件的实现示例代码。...
在ExtJS中,ComboBox是常见的选择控件,用于展示可选项的下拉列表。然而,当需求不仅仅是简单的文本选择,而是需要层级结构的数据展示时,比如树形结构,这时就出现了ComboBoxTree——一个结合了下拉框和树形结构的...
在EXTJS 3.x版本中,Combobox是一个非常实用的组件,它提供了下拉列表功能,用户可以在输入框中输入文字,系统会根据输入内容自动进行模糊匹配,给出相关的建议选项。这种功能在数据筛选、搜索或者选择项较多时特别...
在ExtJS中,下拉框(ComboBox)是一种常用的UI组件,通常用于展示可选择的列表项。然而,标准的下拉框只支持单选模式,如果需要实现多选功能,就需要进行一定的扩展。本文将深入探讨如何在ExtJS 4中实现下拉多选扩展...
在ExtJS 3.4.0版本中,多选下拉框(Multiselect Combobox)是一种常见的用户界面组件,用于提供多个选项供用户选择。这个功能增强了标准的单选下拉框,允许用户同时选择多个条目,通常通过复选框实现。在描述中提到...
在ExtJS中,ComboBox是一个可以下拉选择的输入框,支持动态加载数据和搜索过滤。如果这个文件包含了一个完整的实例,那么它可能会讲解如何配置`queryMode`(如'local'或'remote'),`displayField`和`valueField`,...
标题中的“模仿extjs风格写的jquery combobox”指的是一个基于jQuery的下拉选择框组件,它的设计灵感来源于ExtJS库的ComboBox控件。ExtJS是一款功能丰富的JavaScript框架,以其强大的组件化和数据绑定机制著名,而...