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

网上有很多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将会有值

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值