Extjs combobox не отображает данные - PullRequest
2 голосов
/ 08 октября 2011

У меня есть панель сетки редактора с 2 полями. Исходя из 1-го поля, второе поле должно измениться на комбинированный список с дополнительными параметрами. Для этого необходимо получить значение 1-го поля во время выполнения, чтобы запустить запрос для второго поля. Код работает нормально и получает данные. Но даже когда упомянутая ширина составляет 350 для второго поля, поле со списком, которое появляется, очень мало и не может быть прочитано. Даже выпадающего не видно. Я тоже попробовал свойство ListWidth .. но без изменений в выводе.

Это потому, что изначально поле со списком пусто, и я использую свойство beforequery, чтобы изменить URL с полем id, чтобы поле со списком не получало данные? Но я не вижу никаких ошибок в firebug.

У меня есть следующий код:

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
        }
    })
}

Пожалуйста, помогите мне с этой проблемой. Заранее спасибо.

1 Ответ

0 голосов
/ 20 августа 2012
 var store2 = new Ext.data.store(

Возможно, вам нужно заменить Ext.data.store на Ext.data.Store или Ext.data.JsonStore

...