`
kangbin
  • 浏览: 5924 次
  • 性别: Icon_minigender_1
  • 来自: 山西
最近访客 更多访客>>
社区版块
存档分类
最新评论

关于extjs ComboBoxTree 在form中传值的修订

EXT 
阅读更多

网上有很多extjs,comboxtree的例子,但在form中传值,如何前台显示treenode的内容,往后台传treenode的id?

首先创建Ext.form.ComboBoxTree ,

cmb.ownerCt.items.itemAt(0).setValue(node.getPath().slice(3));

,意思就是当选中时,将path传给form中他前面的那个隐藏域

Ext.form.ComboBoxTree = Ext.extend(Ext.form.ComboBox, {
        store: new Ext.data.SimpleStore({ fields: [], data: [[]] }),
        editable: false,
        width:300,
        shadow: false,
        //id:'shacomtree',
        mode: 'local',
        triggerAction: 'all',
        selectedClass: '',
        onSelect: null,
        canCollapse: true,
        constructor: function(_cfg) {
            if (_cfg == null) {
                _cfg = {};
            }
            Ext.apply(this, _cfg);
            this.treerenderid = Ext.id();
            this.tpl = String.format('<tpl for="."><div style="height:200px"><div id="ext-combobox-tree{0}"></div></div></tpl>', this.treerenderid);
            Ext.form.ComboBoxTree.superclass.constructor.apply(this, arguments);
            if (this.tree) {

                var cmb = this;
                this.tree.on('click', function(node) {
                    //alert("tree click");
                    cmb.canCollapse = true;
                    if (Ext.isFunction(cmb.onSelect)) {
                        cmb.onSelect(cmb, node);                        
                    } else {
                       cmb.setValue(node.text);
cmb.ownerCt.items.itemAt(0).setValue(node.getPath().slice(3));
                        if (cmb.hiddenField) {
                            cmb.hiddenField.value = node.id;
                        }
                    }
                    cmb.collapse();
                });
                
               


                      
                //以下事件,让combobox能正常关闭
                this.tree.on('expandnode', function() { cmb.canCollapse = true; });
                this.tree.on('beforeload', function() { cmb.canCollapse = false; });
                this.tree.on('beforeexpandnode', function() { cmb.canCollapse = false; });
                this.tree.on('beforecollapsenode', function() { cmb.canCollapse = false; });
            }
            this.on('expand', this.expandHandler, this);
            this.on('collapse', this.collapseHandler, this);
        },
        expandHandler: function expand() {
        	//alert("dongdong1");
            this.canCollapse = true;
            if (this.tree) {
                this.tree.render('ext-combobox-tree' + this.treerenderid);
                this.canCollapse = true;         
                this.tree.getRootNode().expand();
               
            }
        },
        collapseHandler: function collapse() {
        	//alert("dongdong2");
        	Ext.getCmp('ksjs').setValue('');
            if (!this.canCollapse) {
                this.expand();
            }
        }
   
});
 


在form中这样用

var turnckForm = new Ext.form.FormPanel({
		title: '查询条件',
		labelAlign: 'right',
		labelWidth: 90,
		frame: true,
		renderTo: "turnckForm",
		bodyStyle: 'padding: 0 0 0 0;',
		style: 'padding:0 0 0 0;',
		width: '100%',
		buttonAlign : "center",
		items: [
			{
				layout:'column',
				items:[
					{
						columnWidth:.5,
		                layout: 'form',
		                items:
		                [{xtype:'hidden',name:'testa',id:'testa',value:'ddd'},
						new Ext.form.ComboBoxTree({
		            		name:'usertype',
		                    hiddenName:'usertype',
		                    fieldLabel:'地理位置',
		                    tree:  new Ext.tree.TreePanel({
		                        root: new Ext.tree.AsyncTreeNode({ text: '--选择--', id: '0' }),
		                        rootVisible: false,
		                        border: false,
		                        width:300,
		                        dataUrl: 'ShowDeptMenu?action=show&limit=1',
		                        root:new Ext.tree.AsyncTreeNode({text: 'root2',id:'0'})
		                    })
		                  })
		                  ]
					},
					{
						columnWidth:.5,
		                layout: 'form',
		                items:[{
			                xtype: 'combo',
			                typeAhead: true,
			                triggerAction: 'all',
			                lazyRender:true,
			                mode: 'local',
			                store: new Ext.data.ArrayStore({
			                    id: 0,
			                    fields: [
			                        'myId',
			                        'displayText'
			                    ],
			                    data: [[1, 'item1'], [2, 'item2']]
			                }),
			                valueField: 'myId',
			                displayField: 'displayText',
			                listeners:{
			                  	'focus' : function(fld){
		                	alert(turnckForm.findById('testa').getValue());
			                  	
			                  }  
			                }
		                
						}]
					}
					]
			}
			]
	});	    		
 

这时隐藏的testa将会有值

 

分享到:
评论

相关推荐

    Extjs ComboBoxTree 下拉树组件

    在ExtJS的ComboBoxTree实现中,它通常包含以下关键特性: 1. **多级结构**:ComboBoxTree允许用户从一个多级的树状数据结构中选择项,这种结构可以方便地表示组织、目录或其他层次关系。 2. **可搜索**:与标准的...

    EXTJS 不同页面之间的传值问题(数据不经过后台,通过页面取得)

    这篇博客"EXTJS 不同页面之间的传值问题(数据不经过后台,通过页面取得)"探讨的就是如何在EXTJS应用的不同视图间传递数据,而无需通过后端接口。 首先,我们可以使用EXTJS的全局变量来实现简单的数据共享。全局...

    Extjs4下拉树菜单ComboBoxTree支持单选和多选并且支持展开选中指定节点的通用控件

    在这个特定的情况下,我们讨论的是一个定制的下拉树菜单控件——ComboBoxTree,它在ExtJS4中实现了单选和多选功能,并且具备展开选中指定节点的能力。这个控件在实际项目中已经被广泛使用并证明了其稳定性和实用性,...

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

    在ExtJS 4.x框架中,ComboboxTree是一种特殊的组件,它将传统的下拉框与树形结构结合在一起,提供了一种更为灵活的用户输入方式。这种组件在数据选择上非常实用,尤其当数据层级关系复杂时,可以方便地进行多选或...

    ExtJs 动态添加表单

    首先,我们要理解表单(Form)在ExtJS中的基本概念。表单是数据输入和验证的核心组件,可以包含各种字段类型,如文本框、下拉菜单、复选框等。这些字段可以通过`Ext.form.field.Field`基类进行扩展,每个字段都有其...

    Extjs4的FormPanel从后台load json数据的要点

    通过以上内容的介绍,我们可以了解到在Extjs4中如何利用`form.load()`方法实现从后台加载JSON数据,并将其映射到表单字段中显示的过程。这不仅有助于提高开发效率,还能增强应用程序的灵活性。希望本文能够帮助您更...

    Extjs中ComboBoxTree实现的下拉框树效果(自写)

    在ExtJS中,为了实现一个具有下拉树结构的ComboBox,即ComboBoxTree,通常需要自定义组件,因为原生的ExtJS库并不直接提供这样的功能。以下是对标题和描述中所述知识点的详细解释: 1. **自定义组件**: 在ExtJS中...

    extjs4 grid(含form)

    extjs4 grid 包括form js代码

    ExtJs异步无法向外传值和赋值的完美解决办法

    1、Ext.data.Store.load();方法是异步的,下面的方式获得的reCount始终是0,因为还没等后台的方法执行完就赋值了,此时store的record还没获得值。 var testStore = new Ext.data.GroupingStore({ ...

    extjs4 入门基础,form、grid、tree

    在ExtJS中,表单是数据输入和验证的重要部分。表单组件包括文本框、复选框、单选按钮、下拉列表等。你可以使用`Ext.form.Panel`创建一个基本的表单,通过`items`配置项添加表单字段。每个字段可以通过` xtype`属性...

    ExtJS 自定义树组件 节点的操作 搜索 右键菜单

    功能: 1.实现ExtJS tree 节点右键菜单 实现增删查. 2.实现针对实体数据的动态搜索. 3.代码命名规范,简单易懂. 4.支持IE 9,FF 19.0.2. 5.将文件解压至ext包example任意组件文件夹即可浏览效果.

    ExtJs表格点击超链接获取行的值

    在ExtJs框架中,我们经常需要在表格(`Ext.grid.Panel`)中显示超链接,并且当用户点击这些超链接时,能够获取到当前行的数据。为了实现这一功能,我们可以使用`renderer`函数对单元格进行自定义渲染。 **代码示例*...

    ExtJs3.3中文API.CHM_extjs3.3中文文档_

    在"ExtJs3.3中文API.CHM"中,开发者可以找到关于ExtJS 3.3的所有API和类的详细描述,以及相关的示例代码。 ExtJS 3.3的核心特性包括: 1. **组件化**:ExtJS基于组件模型,提供了一系列预定义的UI组件,如按钮、...

    extjs-Ext.ux.form.LovCombo下拉框

    在EXTJS框架中,`Ext.ux.form.LovCombo`是一种自定义组件,它扩展了基本的`Ext.form.field.ComboBox`,提供了更丰富的功能,尤其是针对多选和联动选择的需求。这个组件通常用于创建具有“lov”(即“Look Up Value”...

    Extjs4--Form登录功能,结合struts2

    1. **定义表单组件**:在ExtJS中,可以使用`Ext.form.Panel`创建一个表单。在这个例子中,我们需要两个文本字段(用户名和密码)和一个提交按钮。 2. **配置字段**:使用`fieldLabel`指定字段标签,`name`用于标识...

    extjs中文文档大全

    在使用过程中,要特别注意ExtJS的MVC(Model-View-Controller)架构,这是其设计的一大亮点。通过模型管理数据,视图展示数据,控制器协调两者,可以使代码结构清晰,易于维护。此外,利用Data Binding功能,可以...

    ExtJs获取表单元素的值

    在本篇文章中,我们将深入探讨如何在ExtJs框架中有效地获取表单元素的值,并结合提供的代码示例进行详细解析。对于前端开发者来说,掌握如何高效地操作表单元素是必不可少的一项技能,尤其是在使用像ExtJs这样的强大...

    extjs2----关于extjs 的使用,操作

    在标题"extjs2----关于extjs 的使用,操作"中,我们可以看出这是一份关于ExtJS 2.0版本的使用指南,主要涵盖了其基本操作和应用。描述中提到内容较为初级,适合初学者学习,这表明我们将探讨的是ExtJS的基础概念和...

    ExtJs 实例+ExtJs中文教程(学习extjs必备)

    通过学习这些实例,你可以更好地理解如何在实际项目中应用ExtJs,例如如何创建网格(Grid)、表单(Form)、树形视图(Tree)、面板(Panel)等。实例通常包括完整的HTML、CSS和JavaScript代码,以及详细的解释,...

Global site tag (gtag.js) - Google Analytics