论坛首页 Web前端技术论坛

extJs之下拉框联动

浏览 12714 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-07-24  

在ext的世界里面,我重新感受到了在学校里玩swing的记忆.那时我们都需要为一个控件创建一个数据源,在把这个数据源绑定在控件上.ext也是如此.

首先,两个下拉框,第一个下拉框首先load数据源,在select的事件中在load第二个数据源,这就是一个简单的二级联动的实现原理了.

 //	第一个下拉框
	var parentStore = new Ext.data.Store({
		proxy: new Ext.data.HttpProxy({
			url: 'loadByParentid.action?parentid=1001'
		}),
		reader: new Ext.data.JsonReader({
		root: 'list',
		id: 'id'
		}, [
			{name: 'id', mapping: 'id'},
			{name: 'mc', mapping: 'name'}
		])
	}); 
 //     第二个下拉框
	var childStore = new Ext.data.Store({
		proxy: new Ext.data.HttpProxy({
                        //这里是参数可以顺便写,这个数据源是在第一个下拉框select的时候load的
			url: 'loadByParentid.action?parentid=1001'
		}),
		reader: new Ext.data.JsonReader({
		root: 'list',
		id: 'id'
		}, [
			{name: 'id', mapping: 'id'},
			{name: 'mc', mapping: 'name'}
		])
	}); 

       {
	    fieldLabel: '请选择分类',
            xtype:'combo',
            store: parentStore,
            valueField :"id",
            displayField: "mc",
            mode: 'local',
            forceSelection: true,//必须选择一项
            emptyText:'请选择分类...',//默认值
            hiddenName:'interviewsDetail.parent_category',//hiddenName才是提交到后台的input的name
            editable: false,//不允许输入
            triggerAction: 'all',//因为这个下拉是只能选择的,所以一定要设置属性triggerAction为all,不然当你选择了某个选项后,你的下拉将只会出现匹配选项值文本的选择项,其它选择项是不会再显示了,这样你就不能更改其它选项了。
            //allowBlank:false,//该选项值不能为空
	    id : 'parent_id',
            name: 'parent',
			width: 400,
			listeners:{  
				select : function(combo, record,index){
					childStore.proxy= new Ext.data.HttpProxy({url: 'loadByParentid.action?parentid=' + combo.value});
 					childStore.load(); 
				}
			}
        },{
            xtype:'combo',
            store: childStore,
            valueField :"id",
            displayField: "mc",
	    //数据是在本地
            mode: 'local',
            forceSelection: true,//必须选择一项
            emptyText:'请选择子分类...',//默认值
            hiddenName:'interviewsDetail.child_category',//hiddenName才是提交到后台的input的name
            editable: false,//不允许输入
            triggerAction: 'all',//因为这个下拉是只能选择的,所以一定要设置属性triggerAction为all,不然当你选择了某个选项后,你的下拉将只会出现匹配选项值文本的选择项,其它选择项是不会再显示了,这样你就不能更改其它选项了。
            //allowBlank:false,//该选项值不能为空
            fieldLabel: '选择',
            id : 'child_id',
            name: 'child',
	    width: 400
        }

 

这样就大功告成了.

   发表时间:2008-09-17  
非常感谢,今天正要用这个呢!
0 请登录后投票
   发表时间:2009-03-16  
parentStore不用load()一下。。。
0 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics