2012-08-24 127 views
9

我有一个组合框的下面的代码,我怎么能得到在组合框中选择的值,并将该值加载到变量中,并在以后使用它。如何获取extjs组合框的值?

谢谢

Ext.define('Column', { 
    extend: 'Ext.data.Model', 
    fields: ['data1', 'Data2'] 
}); 

var store = Ext.create('Ext.data.Store', { 
    model: 'Column', 
    autoLoad: true, 
    proxy: { 
     type: 'ajax', 
     url: '/data.xml', 
     reader: { 
      type: 'xml', 
      record: 'result' 
     } 
    } 
}); 

var simpleCombo = Ext.create('Ext.form.field.ComboBox', { 
    store: store, 
    displayField: 'data1', 
    valueField: 'data1', 
    width: 250, 
    labelWidth: 120, 
    fieldLabel: 'select a value', 
    renderTo: 'simpleCombo', 
    queryMode: 'local', 
    typeAhead: true 
}); 
+0

你使用的是什么版本的Ext? – sitifensys

+0

@sitifensys基于Ext.define&Models的使用,它必须是某个版本的4.x – sra

回答

10

只需使用select事件

var simpleCombo = Ext.create('Ext.form.field.ComboBox', { 
      store: store, 
      displayField: 'data1', 
      valueField: 'data1' , 
      width: 250, 
      labelWidth: 120, 
      fieldLabel: 'select a value', 
      renderTo: 'simpleCombo', 
      queryMode: 'local', 
      typeAhead: true, 
      listeners: { 
       select: function(combo, records) { 
        // note that records are a array of records to be prepared for multiselection 
        // therefore use records[0] to access the selected record 
       } 
     }); 

API Link

其他内容从评论:

查看组合框的multiSelect属性。您可以获得由定义的分隔符分隔的所有值,并且select事件将为您提供一个包含多个记录的记录数组。注意,getValue()只给你定义的displayField,它是一个字符串,而不是记录本身。所以使用iComboValue [0]会给你第一个字符。应始终使用所选事件访问所选记录。但是您可以将它们存储在数组中供以后使用,并用任何新选择覆盖它。

+0

谢谢。我用记录[0],我得到错误。但是当我尝试使用var iComboValue = simpleCombo.getValue(); \t \t \t \t Ext.Msg.alert('你好,这是标题',iComboValue); 。它为我工作。如果我使用iComboValue [0],它只会给我选择选项的第一个字母。我怎么能做多选择,然后存储这些选定的值?谢谢 – shiro

+0

@shiro看看[multiSelect](http://docs.sencha.com/ext-js/4-1/#!/api/Ext.form.field.ComboBox-cfg-multiSelect)属性组合框。您可以获得由定义的分隔符分隔的所有值,并且select事件将为您提供一个包含多个记录的记录数组。注意,getValue()只给你定义的displayField,它是一个字符串,而不是记录本身。所以使用iComboValue [0]会给你第一个字符。应始终使用所选事件访问所选记录。但是您可以将它们存储在数组中供以后使用,并用任何新选择覆盖它。 – sra

+0

'var i = simpleCombo.getValue();'是一个更好的解决方案。 – pllee

7

您还可以使用:

var iComboValue = simpleCombo.getValue(); 
0

可能是你应该尝试这种

// to get the combobox selected item outside the combo listener 
     simpleCombo.on('change', function (combo, record, index) { 

      alert(record); // to get the selected item 

      console.log(record); // to get the selected item 

     }); 
0

当使用combo.getValue()(如Izhaki指出),请确保已配置组合框正确使用商店模型中的相关字段。

存储与值字段和名称字段

var bandsStore = Ext.create('Ext.data.Store', { 
    fields: ['color', 'name'], 
    data : [ 
    {"color": "green", "name": "Green Day"}, 
    {"color": "pink", "name": "Pink Floyd"}, 
    {"color": "purple", "name": "Deep Purple"} 
    ] 
}); 

使用色域的呆了一会儿今天工作了价值

}, { 
    xtype: 'combo', 
    id: 'BandsCombo', 
    fieldLabel: 'Band Names', 
    name: 'bandNames', 
    store: bandsStore, 
    displayField: 'name', 
    valueField: 'color' 
}, { 

组合框为什么我的形式保持为ComboBox字段发布null。这是问题。 :)