2012-03-02 3 views
1

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

Вот 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(), но это не имеет никакого эффекта, и он не показывает ошибку на консоли

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

Thanks,

ответ

0

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

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

+0

вот как я перезагрузить первый магазин store.load ({Params: {descontoid: descontoid, categoriaid: нулевая}}); Эта линия работает на сетке, но, конечно, она для элемента itemlectlect – Beoulve

+0

Как у вас есть элемент-селектор внутри сетки? Это внутри клетки или что? – sha

+0

Я использовал itemselector как элемент внутри сетки, но это было немного запутанно, поэтому я изменил, не создавал элемент itemlectlect вне сетки и добавлял его в сетку как элемент – Beoulve

0

На самом деле, я думаю, что лучший способ сделать это - использовать «PopulationFromStore» ItemSelector. Разумеется, кроме расширения селектора элементов. В случае расширения вы должны смотреть на функцию 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); 
     } 
    } 
} 
Смежные вопросы