Extjs 实现下拉框多选

{
    fieldLabel:'多选下拉框',
    triggerAction:'all',
    id:'multiselect',
    name:'multiselect',
    xtype: 'combo',
    width:100,
    emptyText:'请选择',
    store:manStore,
    mode:'local',
    valueField:'value',
    displayField:'value',
    //editable:false,
    frame:true,
                                  
    typeAhead: true,
    tpl:'<tpl for="."><div class="x-combo-list-item"><span><input type="checkbox" {[values.check?"checked":""]} value="{[values.value]}" /></span><span >{value}</span></div></tpl>',
    selectOnFocus:true,
    //value:'',
    //applyTo: 'local-states',
    onSelect : function(record, index){
        if(this.fireEvent('beforeselect', this, record, index) !== false){
            record.set('check',!record.get('check'));
            var str=[];//页面显示的值
            var strvalue=[];//传入后台的值
            this.store.each(function(rc){
                if(rc.get('check')){
                    str.push(rc.get('value'));
                    strvalue.push(rc.get('value'));
                }
            });
            this.setValue(str.join());
            this.value=strvalue.join();
            //this.collapse();
            this.fireEvent('select', this, record, index);
                                    
        }
    }
}

 

参考资料: extjs多选下拉框 http://www.studyofnet.com/news/428.html

 

转载自:https://www.douban.com/note/350898530/

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、付费专栏及课程。

余额充值