¿Cómo seleccionar un valor de cuadro combinado en ExtJs?

Estoy tratando de simplemente seleccionar un elemento en la lista desplegable después de que se haya cargado en una tienda. Esto no funciona:

Ext.getCmp('ddlModel').setValue(aircraftStore.getAt(0).data.ModelTypeCode);

Esto arroja una excepción:

Ext.getCmp('ddlModel').selectByValue(aircraftStore.getAt(0).data.ModelTypeCode);

Aquí está la excepción: 'this.view' es nulo o no es un objeto

¿Alguien sabe cómo hacer esto en ExtJs?

preguntado el 12 de junio de 12 a las 16:06

como docs sugiere usar setValue. "La tienda debe estar cargada y la lista expandida para que esta función funcione; de ​​lo contrario, use setValue". funciona para mí como se esperaba -

5 Respuestas

Creé una función para establecer el valor del cuadro combinado en ExtJs:

function ComboSetter(comboBox, value) {
    var store = comboBox.store;
    var valueField = comboBox.valueField;
    var displayField = comboBox.displayField;

    var recordNumber = store.findExact(valueField, value, 0);

    if (recordNumber == -1)
        return -1;

    var displayValue = store.getAt(recordNumber).data[displayField];
    comboBox.setValue(value);
    comboBox.setRawValue(displayValue);
    comboBox.selectedIndex = recordNumber;
    return recordNumber;
}

Respondido 13 Jul 12, 20:07

Pasé 6 horas para saber cómo mostrar la cadena correcta y la encontré en comboBox.setRawValue(displayValue); - Ahmed Bermawy

Ext.getCmp('ddlModel').select(aircraftStore.getAt(0));

Respondido el 12 de junio de 12 a las 17:06

Debe haber un error en ExtJs 3.4 porque selectByValue y select arrojan una excepción incluso cuando se expande el menú desplegable. - greg finzer

En muchos casos, es posible que desee establecer el cuadro combinado en un índice determinado. En ExtJs 4.2 puedes hacer esto así:

function setIndex(combobox, value)
{
    combobox.setValue(combobox.store.data.items[value].data.field1);
}

Respondido 04 Feb 14, 19:02

en mi caso, necesitaba obtener la identificación del cuadro combinado, luego comparar en un si y, por lo tanto, poder pasar una segunda ventana, usar este método y funcionó.

var ValorSeleccionado = Ext.getCmp('cmb_tipoderol_usr').getValue(); // 'cmb_tipoderol_usr' is the id of the combobox.

luego comparar con la acción

if (ValorSeleccionado == 1 ) { Do Action }

Respondido 18 Feb 14, 22:02

Creo que la forma correcta es configurar su cuadro combinado con esta propiedad:

autoSelect: true

true para seleccionar el primer resultado recopilado por el almacén de datos (el valor predeterminado es true). Un valor falso requeriría una selección manual de la lista desplegable para establecer el valor de los componentes a menos que el valor de (typeAheadDelay) fuera verdadero

Respondido 21 Feb 21, 01:02

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.