Ответ 1
Фокус в том, чтобы использовать triggerAction: 'all'
- он выдает всплывающее окно combo для отображения всех элементов, когда вы нажимаете значок стрелки вниз (триггер).
Это, вероятно, самый контр-интуитивный вариант конфигурации ExtJS. И невозможно понять, что это действительно делает, читая документы. И, как вы говорите, чтобы получить простую комбинацию, вы должны указать множество параметров конфигурации, просто чтобы отключить причудливые вещи.
Ребята из ExtJS пообещали исправить это в ExtJS 4, но до тех пор я предлагаю вам создать свой собственный класс ComboBox, который настроил способ, наиболее часто используемый в вашем приложении. Например, у меня есть что-то вроде этого в моем текущем проекте:
/**
* Simple combo, that just allows to choose from a list of values.
*/
var StaticComboBox = Ext.extend(Ext.form.ComboBox, {
mode: 'local',
triggerAction: 'all',
editable: false,
valueField: 'value',
displayField: 'label',
/**
* @cfg {[[String]]} data
* Items in combobox as array of value-label pairs.
*/
data: [],
initComponent: function() {
this.store = new Ext.data.ArrayStore({
fields: ['value', 'label'],
data: this.data
});
StaticComboBox.superclass.initComponent.call(this);
}
});
После этого я могу создать простое комбо с несколькими строками:
new StaticComboBox({
name: 'Reasons',
data: [
[1, 'Reason 1'],
[2, 'Second Reason'],
[3, 'Something else']
]
});