`
raywithu
  • 浏览: 24353 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
社区版块
存档分类
最新评论

ExtJs下拉树的实现

阅读更多


 直接上代码:

 

Ext.ux.TreeCombo = Ext.extend(Ext.form.ComboBox, {
	constructor : function(cfg) {
		cfg = cfg || {};
		Ext.ux.TreeCombo.superclass.constructor.call(this, Ext.apply({
			maxHeight : 300,
			editable : false,
			mode : 'local',
			triggerAction : 'all',
			rootVisible : false,
			selectMode : 'all'
		}, cfg));
	},
	store : new Ext.data.SimpleStore({
		fields : [],
		data : [[]]
	}),
	// 重写onViewClick,使展开树结点是不关闭下拉框
	onViewClick : function(doFocus) {
		var index = this.view.getSelectedIndexes()[0], s = this.store, r = s.getAt(index);
		if (r) {
			this.onSelect(r, index);
		}
		if (doFocus !== false) {
			this.el.focus();
		}
	},
	tree : null,
	// 隐藏值
	hiddenValue : null,
	getHiddenValue : function() {
		return this.hiddenValue;
	},
	setHiddenValue : function(code, dispText) {
		this.setValue(code);
		Ext.form.ComboBox.superclass.setValue.call(this, dispText);
		this.hiddenValue = code;
	},
	initComponent : function() {
		var _this = this;
		var tplRandomId = 'deptcombo_' + Math.floor(Math.random() * 1000) + this.tplId
		this.tpl = "<div style='height:" + _this.maxHeight + "px' id='" + tplRandomId + "'></div>"
		this.tree = new Ext.tree.TreePanel({
			border : false,
			enableDD : false,
			enableDrag : false,
			rootVisible : _this.rootVisible || false,
			autoScroll : true,
			trackMouseOver : true,
			height : _this.maxHeight,
			lines : true,
			singleExpand : true,
			root : new Ext.tree.AsyncTreeNode({
				id : _this.rootId,
				text : _this.rootText,
				leaf : false,
				border : false,
				draggable : false,
				singleClickExpand : false,
				hide : true
			}),
			loader : new Ext.tree.TreeLoader({
				dataUrl : _this.url
			})
		});
		this.tree.on('click', function(node) {
			if ((_this.selectMode == 'leaf' && node.leaf == true) || _this.selectMode == 'all') {
				// if (node.parentNode && node.parentNode.attributes.id != '000000') {
				var dispText = node.text;
				var code = node.id;
				while (node.parentNode && node.parentNode.attributes.id != '000000') {
					if (node.parentNode.text != dispText) {
						dispText = node.parentNode.text + dispText;
					}
					node = node.parentNode;
				}
				_this.setHiddenValue(code, dispText);
				_this.collapse();
			}
		});
		this.on('expand', function() {
			this.tree.render(tplRandomId);
		});
		Ext.ux.TreeCombo.superclass.initComponent.call(this);
	}
})
Ext.reg("treecombo", Ext.ux.TreeCombo);

 

 使用示例:

 

	{
		xtype : 'treecombo',
		name : 'areaName',
		tplId : 'tree_tpl',
		rootVisible : true,
		rootText : '全国',
		url : 'loadArea',
		fieldLabel : '地区',
		maxHeight : 300,
		value : '全国',
		hiddenValue : '000000',
		anchor : '95%'
	}

 

不过通过formPanel.getForm().getValues()是获取不到treecombo的值的,需要自己手工调用

 

var treeValue = treeCombo.getHiddenValue();
treeCombo是上面控件的实例
然后通过Ext.apply(formJSON,{areaName:treeValue})对用formJSON中的显示值进行替换

http://raywithu.iteye.com/admin/blogs/1139509

  • 大小: 12 KB
1
1
分享到:
评论
2 楼 raywithu 2013-09-23  
鸭子听雷公 写道
想看看到底是怎么实现的

上面的代码是齐全的。
1 楼 鸭子听雷公 2013-09-06  
想看看到底是怎么实现的

相关推荐

    ExtJs下拉树

    extjs实现的下拉树的核心代码,包括js,jsp,对有需要的同仁提供参考与学习之用

    extjs树形下拉框treeField

    extjs 树形下拉列表框,可以进行数据选择,数据回显。

    Extjs6中利用treePicker实现的下拉树中

    利用extjs6自带的treePicker插件,实现下拉树的效果

    ExtJS3 实现异步下拉树

    NULL 博文链接:https://lpcjrflsa.iteye.com/blog/1704537

    Extjs4 多选下拉树

    Extjs4多选树,支持多选和单选,能够实现默认值选中,数据存放在json,里面有明确的提示信息。很适合初学者借鉴学习

    extjs4 实现下拉树并支持复选

    extjs4 框架实现树形结构的下拉框,并支持多选、复选,项目中开发实际用到的,这里提供了前段的js代码,大家有用到的,可以进行参考。

    ExtJs4实现下拉树选择框ComboTree

    ExtJs4实现下拉树选择框ComboTree, 文档中包含代码。

    Extjs4.X下comboboxTree下拉树型菜单,完美支持多选、单选,绝对好用

    Extjs4 comboboxTree下拉树型菜单,完美支持多选、单选,绝对好用。来源于网络,稍作修改。

    angularjs下拉树控件

    实现树的下拉效果,和ExtJs的treecombox大同小异。

    Extjs 4.1 下拉框 Tree 的实现(mvc)

    Extjs 4.1 下拉框 Tree 的实现(mvc)

    Extjs实现下拉菜单效果

    本文实例为大家分享了Extjs实现下拉树效果,供大家参考,具体内容如下 &lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &lt;meta charset="UTF-8"&gt; &lt;title&gt;text8&lt;/title&gt; &lt;link rel="stylesheet...

    thinkphp+extjs

    thinkphp+extjs +jquery CMS管理系统 实现多选下拉树 下拉表格

    ExtJS4中文教程2 开发笔记 chm

    Extjs4 带复选框的树(Checkbox tree) Extjs4 新的布局方式 Extjs4 锁定表头(Locking Grid)功能 Extjs4.0 MVC实例 Extjs4.0动态填充combobox数据 Extjs4中up()和down()的用法 ExtJS4学习笔记(一)---window的创建 ...

    自定义ExtJS控件之下拉树和下拉表格附

    在Ext官方的例子中只有下拉列表控件,但是在实际业务中只有下拉列表无法满足需求的,对于刚使用Ext的人来说,自定义一个控件好难,下面是具体的实现

    轻松搞定Extjs_原创

    三、实现Window的最小化功能 87 四、小结 91 第十五章:Panel的子类——FormPanel 93 一、无处不在的表单 93 二、Ext.form.FormPanel类 93 三、提交表单至服务器 97 四、小结 100 第十六章:更多表单组件 102 一、您...

    精通JS脚本之ExtJS框架.part2.rar

    最后利用一个商品信息管理系统和一个企业任务管理系统,向读者演示了ExtJS在实际项目中的应用以及实现流程。  《精通JS脚本之ExtJS框架》附有配套光盘,提供了书中实例的源代码和视频教学文件。此外,读者还可以...

    精通JS脚本之ExtJS框架.part1.rar

    最后利用一个商品信息管理系统和一个企业任务管理系统,向读者演示了ExtJS在实际项目中的应用以及实现流程。  《精通JS脚本之ExtJS框架》附有配套光盘,提供了书中实例的源代码和视频教学文件。此外,读者还可以...

    掏钱学Ext(完整版) 附全部源码

    9.1. 下拉树形选择框TreeField 9.2. 带全选的checkbox树形CheckBoxTree 9.3. 带全选的checkbox的grid A. 常见问题乱弹 A.1. 怎么查看ext2里的api文档 A.2. 想把弹出对话框单独拿出来用的看这里 A.3. 想把...

    Ext Js权威指南(.zip.001

    7.5.11 树节点:ext.data.nodeinterface与ext.data.tree / 364 7.5.12 store的方法 / 366 7.5.13 store的事件 / 368 7.5.14 store管理器:ext.data.storemanager / 369 7.6 综合实例 / 369 7.6.1 远程读取json...

Global site tag (gtag.js) - Google Analytics