Ширина раскрывающегося списка ExtJS ComboBox шире ширины входного окна?
Можно ли установить ширину раскрывающегося меню ExtJS (версия 4) ComboBox, которое будет шире, чем ширина окна ввода?
У меня есть comboxbox, который я хочу быть около 200 пикселей, но у меня есть пейджинг в раскрывающемся списке результатов, и эта ширина даже не настолько велика, чтобы отображать все элементы панели подкачки.
Здесь мой код для создания комбо:
var add_combo = Ext.create('Ext.form.field.ComboBox',
{
id : 'gbl_add_combo',
store : Ext.create('Ext.data.Store',
{
remoteFilter : true,
fields : ['gb_id', 'title'],
proxy :
{
type : 'ajax',
url : 'index.php/store/get_items',
reader :
{
type : 'json',
root : 'records',
totalProperty : 'total',
successProperty : 'success'
},
actionMethods :
{
read : 'POST',
create : 'POST',
update : 'POST',
destroy : 'POST'
}
}
}),
listConfig:
{
loadingText: 'Searching...',
emptyText: 'No results found'
},
queryMode : 'remote',
hideLabel : true,
displayField : 'title',
valueField : 'gb_id',
typeAhead : true,
hideTrigger : true,
emptyText : 'Start typing...',
selectOnFocus : true,
width : 225,
minChars : 3,
cls : 'header_combo',
pageSize : 15
});
Ответы
Ответ 1
Есть две части. Во-первых, вам нужно установить matchFieldWidth: false в вашей конфигурации combobox. Затем вы можете указать атрибуты ширины в разделе listConfig для стилирования только раскрывающегося списка, указав ширину самого списка со списком в основной конфигурации.
Это зависит от предыдущей версии, которая позволяет указать свойство listWidth.
Ответ 2
Я не нашел способ изменить свойство matchFieldWidth динамически. Поэтому я нашел другое решение:
{
xtype: 'combobox',
fieldLabel: 'Short Options',
queryMode: 'local',
store: ['Yes', 'No', 'Maybe'],
matchFieldWidth: false,
listConfig: {
listeners: {
beforeshow: function(picker) {
picker.minWidth = picker.up('combobox').getSize().width;
}
}
}
}
Источник: http://www.sencha.com/forum/showthread.php?293120-Setting-BoundList-minWidth-to-the-width-of-a-parent-ComboBox-without-matchFieldWidth