2012-08-24 18 views
9

Tengo un código siguiente para el cuadro combinado, ¿cómo puedo obtener el valor que está seleccionado en el cuadro combinado y cargar ese valor en una variable y usarlo más tarde?cómo obtener el valor en el cuadro combinado extjs?

Gracias

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

¿Cuál es la versión de Ext que está utilizando? – sitifensys

+0

@sitifensys basado en el uso de Ext.define & Models debe ser alguna versión de 4.x – sra

Respuesta

10

Sólo tiene que utilizar el evento 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

contenido adicional de los comentarios:

Eche un vistazo a la propiedad multiSelect del cuadro combinado. Obtiene todos los valores separados por un delimitador definido y el evento select le dará una matriz de registros con más de un registro. Tenga en cuenta que getValue() solo le proporciona el campo de visualización definido que es una cadena y no el registro en sí. Entonces, si usas iComboValue [0], obtendrás el primer carácter. Siempre se debe acceder a los registros seleccionados usando el evento seleccionado. Pero puede almacenarlos en una matriz para su uso posterior y sobrescribirlos con cualquier nueva selección.

+0

Gracias. Utilicé registros [0], obtuve el error. Pero cuando intento usar var iComboValue = simpleCombo.getValue(); \t \t \t \t Ext.Msg.alert ('Hola, este es el título', iComboValue); . Funcionó para mí Si uso iComboValue [0], solo me da la primera letra de la opción de selección. ¿Cómo puedo hacer múltiples selecciones y luego almacenar esos valores seleccionados? Gracias – shiro

+0

@shiro eche un vistazo a la propiedad [multiSelect] (http://docs.sencha.com/ext-js/4-1/#!/api/Ext.form.field.ComboBox-cfg-multiSelect) de el combobox Obtiene todos los valores separados por un delimitador definido y el evento select le dará una matriz de registros con más de un registro. Tenga en cuenta que getValue() solo le proporciona el campo de visualización definido que es una cadena y no el registro en sí. Entonces, si usas iComboValue [0], obtendrás el primer carácter. Siempre se debe acceder a los registros seleccionados usando el evento seleccionado. Pero puede almacenarlos en una matriz para su uso posterior y sobrescribirlos con cualquier nueva selección. – sra

+0

'var i = simpleCombo.getValue();' es una mejor solución. – pllee

7

También puede utilizar:

var iComboValue = simpleCombo.getValue(); 
0

puede haber deberías probar este

// 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

Al utilizar combo.getValue() (como Izhaki ha señalado), asegúrese de que el cuadro combinado se ha configurado correctamente para usar el campo relevante del modelo de tienda.

tienda con un campo de valor y campo de nombre

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"} 
    ] 
}); 

cuadro combinado con el campo de color para el valor

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

Pasamos un poco de tiempo a trabajar hoy por qué mi forma de mantenerse publicando null para un campo de cuadro combinado. Este fue el problema. :)

Cuestiones relacionadas