ExtJs下拉框联动

实现原理:两个下拉框,第一个下拉框首先load数据源,在select的事件中在load第二个数据源.
 

实例代码:

 

1.//  第一个下拉框   
2.var parentStore = new Ext.data.Store({   
3.    proxy: new Ext.data.HttpProxy({   
4.        url: 'loadByParentid.action?parentid=1001'  
5.    }),   
6.    reader: new Ext.data.JsonReader({   
7.    root: 'list',   
8.    id: 'id'  
9.    }, [   
10.        {name: 'id', mapping: 'id'},   
11.        {name: 'mc', mapping: 'name'}   
12.    ])   
13.});    
14.//     第二个下拉框   
15.var childStore = new Ext.data.Store({   
16.    proxy: new Ext.data.HttpProxy({   
17.                       //这里是参数可以顺便写,这个数据源是在第一个下拉框select的时候load的   
18.        url: 'loadByParentid.action?parentid=1001'  
19.    }),   
20.    reader: new Ext.data.JsonReader({   
21.    root: 'list',   
22.    id: 'id'  
23.    }, [   
24.        {name: 'id', mapping: 'id'},   
25.        {name: 'mc', mapping: 'name'}   
26.    ])   
27.});    
28.  
29.      {   
30.    fieldLabel: '请选择分类',   
31.           xtype:'combo',   
32.           store: parentStore,   
33.           valueField :"id",   
34.           displayField: "mc",   
35.           mode: 'local',   
36.           forceSelection: true,//必须选择一项   
37.           emptyText:'请选择分类...',//默认值   
38.           hiddenName:'interviewsDetail.parent_category',//hiddenName才是提交到后台的input的name   
39.           editable: false,//不允许输入   
40.           triggerAction: 'all',//因为这个下拉是只能选择的,所以一定要设置属性triggerAction为all,不然当你选择了某个选项后,你的下拉将只会出现匹配选项值文本的选择项,其它选择项是不会再显示了,这样你就不能更改其它选项了。   
41.           //allowBlank:false,//该选项值不能为空   
42.    id : 'parent_id',   
43.           name: 'parent',   
44.        width: 400,   
45.        listeners:{     
46.            select : function(combo, record,index){   
47.                childStore.proxy= new Ext.data.HttpProxy({url: 'loadByParentid.action?parentid=' + combo.value});   
48.                    childStore.load();    
49.            }   
50.        }   
51.       },{   
52.           xtype:'combo',   
53.           store: childStore,   
54.           valueField :"id",   
55.           displayField: "mc",   
56.    //数据是在本地   
57.           mode: 'local',   
58.           forceSelection: true,//必须选择一项   
59.           emptyText:'请选择子分类...',//默认值   
60.           hiddenName:'interviewsDetail.child_category',//hiddenName才是提交到后台的input的name   
61.           editable: false,//不允许输入   
62.           triggerAction: 'all',//因为这个下拉是只能选择的,所以一定要设置属性triggerAction为all,不然当你选择了某个选项后,你的下拉将只会出现匹配选项值文本的选择项,其它选择项是不会再显示了,这样你就不能更改其它选项了。   
63.           //allowBlank:false,//该选项值不能为空   
64.           fieldLabel: '选择',   
65.           id : 'child_id',   
66.           name: 'child',   
67.    width: 400   
68.       }  


 

Extjs 中,可以通过设置 `multiSelect` 属性为 `true` 来实现下拉框多选。回显则需要先获取到下拉框组件的值,然后将其赋值给需要回显的表单元素。 例如,在以下代码中,我们创建了一个下拉框组件,设置了 `multiSelect` 为 `true`,并将其添加到了表单中。当用户选择完选项后,点击保存按钮时,我们可以获取到下拉框的值,然后将其赋值给一个隐藏的表单元素,以便在下一次打开表单时进行回显。 ```javascript Ext.create('Ext.form.Panel', { title: 'My Form', items: [{ xtype: 'combo', fieldLabel: 'Choose Options', multiSelect: true, store: ['Option 1', 'Option 2', 'Option 3'], displayField: 'name', valueField: 'value' }, { xtype: 'hidden', name: 'selectedOptions' // 隐藏表单元素,用于回显 }], buttons: [{ text: 'Save', handler: function() { var form = this.up('form').getForm(); var selectedOptions = form.findField('selectedOptions'); var combo = form.findField('combo'); var value = combo.getValue(); selectedOptions.setValue(value); // 将下拉框的值赋值给隐藏表单元素 form.submit({ success: function() { Ext.Msg.alert('Success', 'Form submitted successfully.'); }, failure: function() { Ext.Msg.alert('Error', 'Form submission failed.'); } }); } }] }); ``` 在打开表单时,我们需要先获取到隐藏元素的值,然后将其赋值给下拉框组件。代码如下: ```javascript var form = Ext.create('Ext.form.Panel', { title: 'My Form', items: [{ xtype: 'combo', fieldLabel: 'Choose Options', multiSelect: true, store: ['Option 1', 'Option 2', 'Option 3'], displayField: 'name', valueField: 'value' }, { xtype: 'hidden', name: 'selectedOptions', value: ['Option 1', 'Option 2'] // 设置隐藏表单元素的初始值,用于回显 }] }); var selectedOptions = form.getForm().findField('selectedOptions').getValue(); var combo = form.getForm().findField('combo'); combo.setValue(selectedOptions); // 将隐藏表单元素的值赋值给下拉框组件 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值