2013-08-27 3 views
0

Я создал ленивый блок загрузки, который запрашивает данные по введенному значению. Но у меня проблема, когда значение загружается из базы данных, и я нажимаю кнопку «Развернуть список», он отправляет запрос с пустой маской вместо того, чтобы принимать значение combobox, кажется, что по какой-то причине берется пустое значение.Extjs пустое поле со списком при расширении нажмите

Вот мой выпадающий:

editor : { 
      xtype : 'lazycombo', 
      minChars : 1, 
      pageSize : 20, 
      id : 'tax-code-combo', 
      store : 'TaxCodesStore', 
      triggerAction : 'all' 
     } 

и вот запрос Титулы:

limit 20 
mask  
organizationId 108 
start 0 

маска пуста, а не до того установленного значения.

Спасибо за помощь

мой магазин:

TaxCodesStore = Ext.extend(Ext.data.JsonStore, { 
constructor : function(cfg) { 
    cfg = cfg || {}; 
    TaxCodesStore.superclass.constructor.call(this, Ext.apply({ 
     storeId : 'TaxCodesStore', 
     api : { 
      read : 'taxCode/getPagedList' 
     }, 
     root : 'data', 
     baseParams : { 
      organizationId : 0 
     }, 
     idProperty : 'taxCode', 
     fields : [ { 
      mapping : 'taxCode', 
      name : 'value' 
     }, { 
      mapping : 'taxCode', 
      name : 'label' 
     }, { 
      name : 'orgId', 
      type : 'int' 
     }, { 
      name : 'percentageRate', 
      type : 'int' 
     } ] 
    }, cfg)); 
} 
}); 

new TaxCodesStore(); 

Update

Что я нашел после того, как исследования, этот метод выпадающий getValue() возвращает значение, но по какой-то причине в это не задается как масляная маска по запросу.

ответ

0

После отладки источника, я нашел там проблему.

Это из-за triggerAction : 'all', я удалил его, и теперь мой комбо работает идеально

1

«магазин» свойство тучных быть ссылка на такой объект Ext.data.Store:

store: Ext.create('TaxCodesStore', { ... }); 

необходимо также настроить «displayField» и «свойства valueField».

UPD:

{ 
     xtype : 'lazycombo', 
     minChars : 1, 
     pageSize : 20, 
     id : 'tax-code-combo', 
     store : new TaxCodesStore(), // <--- 
     triggerAction : 'all', 
     displayField: 'origId', // <--- 
     valueField: 'value' // <--- 
    } 
+0

я добавил мой магазин реализация – kuldarim

+0

@Riku См обновленный ответ. – Vlad

+0

спасибо за ваше предложение, но он не работает для меня, та же ошибка, которую я получаю – kuldarim

1

Может this поможет вам

HTML

<div id="cmb"></div> 

Javascript

Ext.onReady(function(){ 
    var store = Ext.create('Ext.data.Store', { 
     fields: ['id', 'attr'], 
     proxy: { 
      type: 'ajax', 
      api: { 
       read: '/someurl' 
      }, 
      reader: { 
       type: 'json', 
       root: 'data', 
       successProperty: 'success', 
       totalProperty: 'total' 
      } 
     } 
    }); 
    var cmb = Ext.create('Ext.form.field.ComboBox', { 
     triggerAction: 'all', 
     store: store, 
     displayField: 'attr', 
     valueField: 'id', 
     queryMode: 'remote', 
     listeners: { 
      beforequery: function(){ 
       this.getStore().getProxy().extraParams.mask = this.getValue(); 
      } 
     } 
    }); 


    cmb.render('cmb'); 

}) 
+0

спасибо за сообщение для предложения – kuldarim

Смежные вопросы