Я только что набрал еще один пост и на полпути выяснил свою проблему. Посмотрим, случится ли это снова.
Мне нужно иметь возможность обновить другой выпадающий список, если выбран один. Моя проблема в том, что вторичный выпадающий не загружается с первого раза; ничего не происходит на странице. Если пользователь выбирает один и тот же элемент во второй раз, то все работает нормально.
Я программно генерирую кучу ComboBox:
var item = new Ext.form.ComboBox({
store: store,
id: input.id,
name: input.id,
displayField: 'description',
valueField: 'id',
mode: 'local',
forceSelection: true,
triggerAction: 'all',
emptyText: 'Select one...',
typeAhead: false,
editable: true,
allowBlank: allowBlank,
selectOnFocus:true,
fieldLabel: input.label,
listeners: {
scope: this,
'select': checkDependencies
},
autoHeight: true
});
Моя проблема возникает, когда я пытаюсь обновить зависимый выпадающий список. Вот функция, которая вызывается, когда пользователь выбирает опцию:
function checkDependencies(el, ev){
debug(el);
debug(el.value);
var val = el.value;
if (Ext.isArray(dependencies[val])) {
var id = dependencies[val]['changeId'];
var input = Ext.getCmp(id);
var vals = dependencies[val]["vals"];
input.store.removeAll();
gridForm.doLayout();
debug("num elements: " + vals.length);
input.autoHeight = true;
for (var i=0;i<vals.length;i++) {
input.store.add(vals[i]);
}
gridForm.doLayout(false,true);
}
}
Поражает все строки отладки. В списке есть элементы, но, как я уже сказал, первый раз, когда пользователь выбирает элемент, он не работает, но последующий выбор работает нормально.
Я закончил тем, что выложил doLayouts везде, но, похоже, это не помогло.