El cuadro combinado de Extjs 4 no se carga por primera vez (después de configurar el combo con los datos del formulario)

7

Tengo un cuadro combinado con en window-> form-> combo, iam vinculando datos de la cuadrícula al combo usando form.loadRecord (registro).

Mi problema es:

Después de vincular los datos, activé el combo para cambiar los datos del combo. Por primera vez, el combo se expande poco y se oculta automáticamente después del segundo clic, solo los elementos combinados se cargan correctamente.

{
    xtype: 'combobox',
    editable: false,
    id: 'USERTYPECmbo',
    queryMode: 'remote',
    displayField: 'USERTYPE',
    store: Ext.create('Ext.data.Store', {
        autoLoad: true,
        fields: ['USERTYPE'],
        proxy: {
            type: 'ajax',
            extraParams: {
                typeName: 'USERTYPE'
            },
            url: 'USERTYPE.htm',
            reader: {
                type: 'json',
                root: 'res'
            }
        },
        listeners: {
            load: function (store, options) {
                var combo = Ext.getCmp('USERTYPECmbo');
                combo.setValue(combo.getValue()); //Set the remote combo after the store loads.
            }
        }
    }),
    name: 'USERTYPE',
    fieldLabel: 'USER TYPE'
}

Indíqueme dónde está yendo mal o si se debe agregar alguna propiedad para el componente.

7

Intenta agregar

queryMode: 'local' 

a las propiedades de tu cuadro combinado

0
4

Es porque valueField no está definido en su objeto de configuración (mientras displayField está configurado). Cuando extjs intenta cargar su combo, necesita tanto los campos de valor como los campos de visualización para mostrar su combo correctamente, pero en el tiempo de renderizado, su valueField aún no está configurado y está esperando la solicitud ajax enviada al servidor y la respuesta se envía de vuelta.

En su oyente, está configurando el valor del combo mientras aún no está renderizado, así que cuando haga clic en su combo por segunda vez, exactamente después de que se cargue el JSON remoto, se establecerán los campos combinados.

{
    xtype : 'combobox',
    editable : false,   
    id:'USERTYPECmbo',  
    queryMode: 'remote',
    displayField: 'USERTYPE', 
    valueField: 'USERTYPE',//set whatever field you like in your json                        
    store :new Ext.data.Store({
        autoLoad: true,
        fields: [ 'USERTYPE' ],
        proxy: {
            type: 'ajax',
            extraParams: {typeName : 'USERTYPE'},
            url : 'USERTYPE.htm',
            reader: {
                type: 'json',
                root : 'res'
            }
        }                       
    }),
    name : 'USERTYPE',
    fieldLabel: 'USER TYPE'
}

Actualización: un problema que no noté fue que creaste la tienda usando Ext.create y debido a eso, extjs intentaría obtener tu JSON dos veces (solo verifícalo usando firebug) mientras que una solicitud sería suficiente. de Ext.create Probé su código en mi servidor local y funciona correctamente. Si aún tiene el mismo problema, proporcione un enlace de descarga a su formulario js + html + Store para que pueda revisar su código. Puede descargar mi prueba archivos construidos en su código y trabajando desde aquí. Probado en FF 6 y opera 10 e IE9

5
  • hola drfanai, gracias por su respuesta, agregué valueField y también agregué tareas de retraso como .. var task = new Ext.util.DelayedTask (function () {view.down ('form'). loadRecord (record);}); task.delay (20000); ..para finalizar el procesamiento del formulario y almacenar la carga ..aunque iam obteniendo el mismo problema
    vineth
    21/09/11 a las 13:34
  • @ drfanai Si es posible, proporcione una muestra de datos combinados (remotos) de enlace de formulario de muestra o cualquier enlace relacionado, ya que no sé cómo puedo verificar que TODO el almacén combinado esté cargado dentro del formulario
    vineth
    21/09/11 a las 13:35
  • Actualicé mi respuesta. Espero que ayude. Verifique esta URL para obtener un buen tutorial sobre tiendas remotas quizzpot.com/2009/10/combo-box-loaded-dynamically-and-remotely 21/09/11 a las 18:08
  • @ drfanai .i actualicé mi publicación ... 4shared.com/file/ySBR_McK/form.html ... ejecute este código actualizado para conocer mi problema ... Por favor, haga clic en el botón de carga primero y haga clic en el disparador combinado ... la primera vez vendrá y se esconderá y la segunda vez se cargará normalmente.
    vineth
    22/09/11 a las 14:48
  • @ drfanai, obtuve la respuesta, gracias por tu ayuda de nuevo ... Estoy pensando en cómo restablecer ese filtro en el combo remoto ... sencha.com/forum/… ,
    vineth
    10/10/11 a las 11:58