【问题标题】:How to dynamically make a combobox multiselect/singleselect in extjs如何在 extjs 中动态地制作组合框多选/单选
【发布时间】:2013-07-19 04:34:25
【问题描述】:

我正在使用 Boxselect 扩展自 ExtJs 4.1 中的组合框。根据某些情况,我需要选择单个或多个。

这是我的代码

bool result;
result = getData();
if(result)
{
  Ext.getCmp("combo1").multiSelect =true
}

这不会将组合框更改为多选。有什么想法吗?

【问题讨论】:

    标签: javascript extjs extjs4.1


    【解决方案1】:

    multiSelect 选项更改时,您必须强制重新创建选择器。为此,您需要删除组合的属性picker

     combo.multiSelect = true;
     delete combo.picker;
    

    完整示例:

    Ext.widget('panel', {
        renderTo: Ext.getBody(),
        layout: {type: 'vbox', align: 'center'},
        margin: 10,
        defaults: {width: 200, margin: 5},
        items: [{
            xtype: 'combo',
            store: ['Foo', 'Bar', 'Baz']
        },{
            xtype: 'displayfield',
            fieldLabel: 'Multiselect is',
            value: "OFF"
        },{
            xtype: 'button',
            text: "Toggle multiselect",
            handler: function() {
                var panel = this.up(),
                    combo = panel.down('combo'),
                    outField = panel.down('displayfield'),
                    newValue = !combo.multiSelect;
                combo.multiSelect = newValue;
                // force recreation of picker
                delete combo.picker;
                outField.setValue(newValue ? "ON" : "OFF");
            }
        }]
    });
    

    【讨论】:

      【解决方案2】:

      尝试使用 Ext.apply 方法。

      combo = Ext.getCmp.....  
      Ext.apply(combo, {multiSelect: true});
      

      【讨论】:

      • -1,apply() 将与问题中的代码完全一样。
      猜你喜欢
      • 1970-01-01
      • 2012-06-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-24
      • 1970-01-01
      • 2012-06-15
      • 2011-02-28
      相关资源
      最近更新 更多