Extjs4 - Перезагрузка магазина внутри itemselector - PullRequest
1 голос
/ 02 марта 2012

У меня есть itemselecor внутри сетки, и у меня есть выпадающий список, который должен перезагрузить только хранилище внутри itemselector (поля значений должны оставаться нетронутыми)

Вот этот селектор предметов

var grid = Ext.widget('form', {
        id: 'grid',
        title: '',
        width: 600,
        bodyPadding: 10,
        renderTo: 'itemselectorproduto',
        items: [{
            xtype: 'itemselector',
            name: 'itemselector',
            id: 'itemsel',
            anchor: '100%',
            imagePath: '/ux/images/',
            store: store,
            displayField: 'Nome',
            valueField: 'ID',
            value: vitrine,
            allowBlank: true,
            msgTarget: 'side'
        }]
    });

Я пытался вызвать обычный store.load (), но это не дает никакого эффекта и не показывает ошибки на консоли

При необходимости я выложу больше кода, но я думаю, что этого должно быть достаточно

Спасибо

Ответы [ 2 ]

0 голосов
/ 24 сентября 2013

На самом деле я думаю, что лучший способ сделать это - использовать ItemSelector "populateFromStore". Конечно, кроме расширения селектора предметов. В случае расширения вы должны посмотреть на функцию "onBindStore" ItemSelector.

onBindStore: function(store, initial) {
    var me = this;

    if (me.fromField) {
        me.fromField.store.removeAll()
        me.toField.store.removeAll();

        // Add everything to the from field as soon as the Store is loaded
        if (store.getCount()) {
            me.populateFromStore(store);
        } else {
            me.store.on('load', me.populateFromStore, me);
        }
    }
}

Итак, как вы видите в случае пустого хранилища, оно подключается к событию загрузки. И это должно быть так:

    onBindStore: function(store, initial) {
    var me = this;

    if (me.fromField) {
        me.fromField.store.removeAll()
        me.toField.store.removeAll();

        me.store.on('load', me.populateFromStore, me);
        // Add everything to the from field as soon as the Store is loaded
        if (store.getCount()) {
            me.populateFromStore(store);
        }
    }
}
0 голосов
/ 04 марта 2012

Просматривая код, если ItemSelector не выглядит, как будто он поддерживает какие-либо изменения в хранилище после его связывания.Это в основном создает локальные копии данных.И если вы вызовете метод bindStore, чтобы назначить другое хранилище - это сотрет ваш выбор.

Вы всегда можете улучшить код в ItemSelector, чтобы разрешить такое поведение.Это не должно быть проблемой.Вы можете подписаться на событие datachanged или загрузить хранилище при привязке к нему, а затем обработать ситуацию при изменении данных хранилища.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...