combobox: не работает setValue
Юзаю: ExtJS 6.01 и 6.2 GPL
Проблема: не могу combobox-у присвоить значение. Получаю ошибку (в консоле видно): Uncaught TypeError: Cannot read property 'get' of undefined(…) Часть кода: { xtype: 'combobox', allowBlank: true, width: 75, valueField: "TableID", hiddenName: "TableID", displayField: "TableName", name: "TableID", itemId: "TableID", id: "TableID" }, Гружу данные в стор var varStoreTablesGrid = Ext.create("store.storeTablesGrid"); varStoreTablesGrid.setData([], false); varStoreTablesGrid.proxy.url = "..."; varStoreTablesGrid.load({ waitMsg: lanLoading }); varStoreTablesGrid.on('load', function () { Ext.getCmp("TableID").store = varStoreTablesGrid; }); Ну и хочу присвоить КомбоБоксу значение: var combo = Ext.getCmp('TableID'); //combo.setRawValue("2016"); - это работает combo.setValue(1); //это не работает, получаю ошибку в консоли: Uncaught TypeError: Cannot read property 'get' of undefined(…) Подскажите в чём может быть проблема? |
Но когда стор локальный в виде переменно, то тогда всё ок.
{ xtype: 'combobox', allowBlank: true, width: 75, valueField: "TableID", hiddenName: "TableID", displayField: "TableName", name: "TableID", itemId: "TableID", id: "TableID", store: new Ext.data.SimpleStore({ fields: ["TableID", "TableName"], data: Table_values }), }, Где Table_values var DirHarvestYear_values = [ [1, 'Запись-1'], [2, 'Запись-2'], [3, 'Запись-3'], [4, 'Запись-4'] ]; То ошибок нет, можно применять к КомбоБоксу метод: Ext.getCmp('TableID').setValue(1); |
Вместо
Ext.getCmp("TableID").store = varStoreTablesGrid; попробуйте Ext.getCmp("TableID").setStore( varStoreTablesGrid ); |
Чем каноничный вариант не устраивает?
Ext.define('MyApp.store.TableGrid', { extend: 'Ext.data.Store', alias: 'store.TablesGrid', fields: ['TableID', 'TableName'], proxy: { url: '...' } }); ... { xtype: 'combobox', allowBlank: true, width: 75, valueField: "TableID", hiddenName: "TableID", displayField: "TableName", name: "TableID", itemId: "TableID", id: "TableID", store: { type: 'TablesGrid' } } ... Ext.getCmp('TableID').getStore().load(); |
nohuhu,
А как присвоить значение: Ext.getCmp('TableID').setValue(1); |
Цитата:
{ xtype: 'combobox', valueField: 'TableID', value: 1, ... } |
Оно наперёд не известно.
Я его загружаю с сервера. |
Может тогда через ViewModel - ?
Как только загрузили сторе, присвойте значение во ViewModel. Что то типа //ViewModel data : { defval: 0 } //combo bind: { value: '{defval}' } //controller this.getViewModel().set({ defval: 'значение из загруженного стор' }) |
Часовой пояс GMT +3, время: 01:52. |