У меня проблема при использовании комбинированного окна extjs (независимо от браузера, протестировано в Chrome и FF с одинаковым результатом).
Поле со списком загружается очень хорошо, обе записи отображаются. Я могу выбрать один из двух, которые были загружены изначально, но если я попытаюсь изменить выбор после того, как я уже выбрал, он сохранит исходное значение, и событие выбора или изменения не будет запущено. Я обнаружил, что если я начну печатать в невыбранной записи, автозаполнение вступит во владение, и я смогу нажать клавишу возврата, чтобы выбрать запись, и произойдут события select и change Почему я не могу просто нажать на невыбранную запись, чтобы выбрать ее?
Вот модель, считыватель, хранилище данных и код поля со списком:
//Model
Ext.define('cbMonitorModel', {
extend: 'Ext.data.Model',
fields: [
{name: 'iMonitorID', type: 'String'},
{name: 'sMonitorName', type: 'String'}
]
});
//Reader
var cbMonitorReader = Ext.create('Ext.data.JsonReader',{
type: 'json',
model: 'cbMonitorModel'
});
//Store
var cbMonitorDataStore = Ext.create('Ext.data.Store',{
fields: ['iMonitorId','sMonitorName'],
autoLoad: true,
proxy: {
type: 'ajax',
url: '/inc/ajax/Monitors.php',
actionMethods: 'POST',
reader: cbMonitorReader,
extraParams: {
task: 'getMonitors',
domain: sMonitorDomainName
}
}
});
//ComboBox
Ext.create('Ext.form.ComboBox',{
fieldLabel: 'Monitor',
store: cbMonitorDataStore,
queryMode: 'local',
displayField: 'sMonitorName',
valueField: 'iMonitorId',
renderTo: Ext.get('monitorSelect'),
width: 400,
listeners: {
select: function(combo, records, opts) {
console.log('MonitorComboBox - Select');
console.log(combo);
console.log(records);
console.log(opts);
console.log(cbMonitorDataStore);
console.log('--------------------------------------------------------------------');
}
}
});
Прокси возвращает следующую строку:
[{"iMonitorID":"85","sMonitorName":"6176 - xxx.xxx.xxx.xxx default monitor"},{"iMonitorID":"86","sMonitorName":"14177 - aaa.bbbbbbbbb.com default monitor"}]
Спасибо. Любая помощь будет оценена.
Редактировать: 2011-09-08 16:32 CST
Я до сих пор не понял эту проблему, но в то же время я обнаружил «грязную» работу вокруг ... событие «развернуть» очищает предыдущее значение, которое позволяет пользователю выбрать другое значение, но тогда проблема заключалась в том, что я не мог использовать "getValue ()" ... отсюда cb.lastSelection[0].raw.iMonitorID
строка ...
Код ComboBox:
var MonitorCB = Ext.create('Ext.form.ComboBox', {
fieldLabel: 'Monitor',
store: cbMonitorDataStore,
queryMode: 'local',
displayField: 'sMonitorName',
valueField: 'iMonitorName',
width: 400,
renderTo: 'monitorSelect',
listeners: {
select: function(cb, rec, opts){
console.log(cb.lastSelection[0].raw.iMonitorID);
},
expand: function(){this.clearValue()}
}
});