2017-02-22 12 views
1

Я новичок в ExtJS. Так что найти немного сложно в понимании многих вещей.Ошибка в получении значения первой строки из таблицы в ExtJS

Я коробка образца со списком, где я с извлечением ДАННЫХ из таблицы

Это комбинированное окно:

xtype: 'fieldset', 
    title: 'Dress Type', 
    items: [{ 
     xtype: 'combobox', 
     name: 'dresses', 
     forceNewStore: true, 
     queryMode: 'local', 
     displayField: "description", 
     valueField: "description", 
     mapperId: 'getavailabletype', 
     emptyText: 'Select Type 
     forceSelection: true, 
     maskRe: /[A-Za-z0-9]/, 
     margin: '15px', 
     allowBlank: false, 
     triggers: { 
      clear: { 
       cls: 'x-form-clear-trigger', 
       handler: function() { 
        this.reset(); 
       } 
      } 
     }, 
    }] 

Вот так я пытаюсь сохранить первое значение таблицы: me.down("combobox[name=dresses]").setValue(me.down("combobox[name=dresses]").store.getAt('0').get('description'));

Я получаю:

Uncaught TypeError: Cannot read property 'get' of null @getAt('0')

Пожалуйста, помогите

+0

Какую версию ExtJS вы используете? –

+0

версия 4 .. Я использовал статический магазин, и теперь я заменил его данными из базы данных. не знаю, как заполнить значение по умолчанию. –

+0

Обычно первое значение таблицы - первая запись магазина ... –

ответ

1

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

Как так:

listeners: { 
    'render': function(combo) { 
     combo.setValue(combo.getStore().first()); 
    } 
} 

Здесь у вас есть рабочая скрипку: https://fiddle.sencha.com/#view/editor&fiddle/1qqk

ИЛИ

Если у вас есть ссылки на комбо-магазине, скажем, это в comboStore, вы можете установить первое значение следующим образом:

{ 
    xtype: 'combobox', 
    value: comboStore.first() 
} 

Другая скрипка: https://fiddle.sencha.com/#view/editor&fiddle/1qql

Теперь, если вы не уверены в том, что магазин будет загружен к тому времени вы инициализировать комбо, вы можете установить следующий перехватчик для выпадающего списка:

listeners: { 
    render: function(combo) { 
     var store = combo.getStore(), 
      setFirstStoreValFn = function() { 
       combo.setValue(store.first()); 
      }; 

     if (store.getCount()) { 
      setFirstStoreValFn(); 
     } 
     else { 
      store.on('load', setFirstStoreValFn, null, {single: true}) 
     } 
    } 
} 

Таким образом, в основном он создает функцию многократного использования, которая устанавливает значение комбо для первой записи в хранилище, а затем проверяет, имеет ли хранилище записи (что означает, что это было загружено), это вызовет функцию, если нет - он установит один загрузочный прослушиватель в хранилище, который затем вызовет t он установил функцию значения.

Опять же, скрипка: https://fiddle.sencha.com/#view/editor&fiddle/1qqm

0

вам нужно, чтобы перейти к имп -> магазин -> первая запись ---> данные

для этого me.down("combobox[name=dresses]").store.getAt(0).get('d‌​escription'))

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