Показать сообщение отдельно
  #2 (permalink)  
Старый 23.12.2011, 18:49
Интересующийся
Отправить личное сообщение для yo-y0 Посмотреть профиль Найти все сообщения от yo-y0
 
Регистрация: 16.09.2011
Сообщений: 16

Странная особенность combо. После изменения store нужно вызывать
combo.bindStore(combo.store);
И это даже работает! Но не всегда.
В моем примере перерисовка и отработка перерисовки после смены store начинает происходить только если по нему предварительно кликнули ранее мышкой. Эмуляция клика ни к чему не приводит.
=
Поиск по гуглю bindStore показал, что с похожими проблемами столкнулся не я один.
=
Неработающий пример не привожу - громоздкий код.
Работающий пример:
combo1  =  new Ext.form.ComboBox({
        renderTo: 'ex3',
        queryMode: 'local',
        displayField:'v',
        valueField:'id',
        store: Ext.create('Ext.data.Store', {
        fields: [{name: 'id', type: 'string'},{name: 'v',  type: 'string'}], data : [{id:1,v:0},{id:999999999,v:1}]
        }),
        listeners:{select: function(combo, value) {
                        combo2.clearValue();
                        combo2.store.loadData([{id:1,v:combo1.getValue()}]);
                        combo2.bindStore(combo2.store); /* !! */
                        },


                    }
    });


combo2  =  new Ext.form.ComboBox({
        renderTo: 'ex2',
        id:"e2",
        queryMode: 'local',
        displayField:'v',
        valueField:'id',
        store: Ext.create('Ext.data.Store', {
        fields: [{name: 'id', type: 'string'},{name: 'v',  type: 'string'}], data : []
        })
    });
Ответить с цитированием