Глядя на код Ext.ux.form.ItemSelector.onRender, я заметил комментарий "//ICON HELL!!"
, который не сулит ничего хорошего для Ext.override, который вызывает метод onRender для itemSelectors, фактически не копируя все ICON HELL более.
Лучший способ, которым вы могли бы пойти, это добавить прослушиватель событий render
или afterrender
к вашему ItemSelector и при этом попытаться получить доступ к экземпляру набора полей в компонентах MultiSelect вашего ItemSelector и изменить заголовок.
Но подумайте об этом ... этот компонент ItemSelector нуждается в некотором срочном рефакторинге, и его следует настроить через конфигурацию по умолчанию.
В любом случае, попробуйте это ... вы можете запустить это, поместив его в примеры множественного выбора по умолчанию, которые поставляются с загрузкой ExtJS3.
Обратите внимание, что слушатель рендеринга и опция конфигурации заголовка i добавлены в мультиселекторы.
/*!
* Ext JS Library 3.3.1
* Copyright(c) 2006-2010 Sencha Inc.
* licensing@sencha.com
* http://www.sencha.com/license
*/
Ext.onReady(function(){
Ext.QuickTips.init();
Ext.form.Field.prototype.msgTarget = 'side';
var ds = new Ext.data.ArrayStore({
data: [[123,'One Hundred Twenty Three'],
['1', 'One'], ['2', 'Two'], ['3', 'Three'], ['4', 'Four'], ['5', 'Five'],
['6', 'Six'], ['7', 'Seven'], ['8', 'Eight'], ['9', 'Nine']],
fields: ['value','text'],
sortInfo: {
field: 'value',
direction: 'ASC'
}
});
/*
* Ext.ux.form.ItemSelector Example Code
*/
var isForm = new Ext.form.FormPanel({
title: 'ItemSelector Test',
width:700,
bodyStyle: 'padding:10px;',
renderTo: 'itemselector',
items:[{
xtype: 'itemselector',
name: 'itemselector',
fieldLabel: 'ItemSelector',
imagePath: '../ux/images/',
multiselects: [{
width: 250,
height: 200,
store: ds,
displayField: 'text',
valueField: 'value',
title: 'Left'
},{
width: 250,
height: 200,
store: [['10','Ten']],
tbar:[{
text: 'clear',
handler:function(){
isForm.getForm().findField('itemselector').reset();
}
}],
title: 'Right'
}],
listeners: {
render: function(iSelector){
iSelector.fromMultiselect.fs.header.update(this.initialConfig.multiselects[0].title);
iSelector.toMultiselect.fs.header.update(this.initialConfig.multiselects[1].title);
}
}
}],
buttons: [{
text: 'Save',
handler: function(){
if(isForm.getForm().isValid()){
Ext.Msg.alert('Submitted Values', 'The following will be sent to the server: <br />'+
isForm.getForm().getValues(true));
}
}
}]
});
});