Extjs combobox no muestra datos

2

Tengo un panel de cuadrícula de editor, con 2 campos. Basado en el primer campo, el segundo campo debería cambiar a un cuadro combinado con más opciones. Para ello, es necesario obtener el valor del primer campo en tiempo de ejecución para activar la consulta del segundo campo. El código funciona bien y recupera los datos. Pero incluso cuando el ancho mencionado es 350 para el segundo campo, el cuadro combinado que aparece es muy pequeño y no se puede leer. Incluso no se ve el menú desplegable. También probé la propiedad ListWidth ... pero no hubo cambios en la salida.

¿Es porque, inicialmente, el cuadro combinado está vacío y estoy usando la propiedad beforequery para cambiar la URL con el campo de identificación para que el cuadro combinado no obtenga los datos? Pero no puedo ver ningún error en firebug.

Tengo el siguiente código:

createGrid= function(e){
    var store= new Ext.data.Store({
        autoLoad: true,
        proxy: new Ext.data.HttpProxy({ url: ..... }) //url to get the data
        reader: new Ext.data.JsonReader({
            root: //the root,
            id: //id,
            sortInfo: {field: 'id', direction: 'ascending' },
            fields: ['id','fields']
        })
    });

    var store2= new Ext.data.store ({ 
        autoLoad: true,
        id: 'store2',
        proxy: new Ext.data.HttpProxy({ url: '  '}) //url 
        reader: new Ect.data.JsonReader({
            root: 'enums','id', fields: ['enum_id','value']
        })
    });


    var cm=new ext.grid.columnModel([
        {id:'id',name:'id',dataIndex: 'id', width: 300},
        {id:'fields', header: 'fields',width: 350, editor: new  Ext.form.ComboBox({
            name: 'combo',
            store: store2,
            width: 350,
            valueField: 'enum_id',
            displayField: 'value',
            listeners: {
                beforequery: function(query){
                    var g_n=Ext.getCmp('grid1');
                    var s_t=g_n.getSelectionModel().getSelections();
                    var record=s_t[0]; 
                    var assign_data=record.get('id');
                    var actionStore=Ext.StoreMgr.get('store2');
                    var action_combobox=Ext.getCmp('combo1');
                    actionStore.proxy.conn.url=' ',//new url which requires the 'id' field
                    actionStore.load();
                    return query;
                }
            }
        })},
    ]);


    return new Ext.grid.EditorGridPanel({
        id: 'grid1',
        store: store,
        cm:cm,
        sm: new Ext.grid.RowSelectionModel ({ singleSelect: true});
        autoExpandableColumn: 'fields',
        listeners: {
            //the other grid listeners
        }
    })
}

Por favor ayúdame con este problema. Gracias por adelantado.

5
  • ¿Cuál es la versión de ExtJs que estás usando? Además, ¿qué campo está representado por 'combo1' aquí que ha utilizado en su oyente 'beforequery'? Como verificación aleatoria, espero que haya una coincidencia en los campos de su tienda y las claves JSON provenientes del servidor.
    netemp
    9/10/11 a las 15:23
  • Estoy usando extjs-3.3.1. Y, el campo 'campo' en el panel de cuadrícula se reemplaza por un cuadro combinado una vez que el usuario hace clic en la celda 'campo'. En el firebug, puedo ver los valores que se recuperan. no se muestran errores en el firebug. Lo único es que el ancho del cuadro combinado es muy pequeño y el menú desplegable tampoco se muestra. 9/10/11 a las 16:33
  • el nombre del cuadro combinado es 'combo1' .. perdón por el error tipográfico en la parte del código. 9/10/11 a las 17:14
  • Tuve un problema en una interfaz de usuario al usar ExtJS y anchos con respecto a Ext.form.ComboBox. Algunos eran demasiado cortos o demasiado largos y terminamos usando [ stackoverflow.com/questions/1459221/… . Tuvimos que hacer algunos ajustes, pero el cambio de tamaño para ajustar el contenido dentro de la lista funcionó muy bien debido a las variaciones en la longitud de las opciones. 10/10/11 a las 19:40
  • Ext.ux.ResizableComboBox aquí hay un enlace mejor. 10/10/11 a las 19:57
0
 var store2 = new Ext.data.store(

Tal vez necesite reemplazar Ext.data.storecon Ext.data.StoreoExt.data.JsonStore