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, время: 09:48. |