Пытаюсь создать и использовать собственный элемент управления основанный на ListView. По поводу создания никаких проблем (создать модуль и унаследоваться от модуля компонента). Вопрос, как создать элемент управления в клиентской схеме?
Нравится
Здравствуйте, Иван!
Реализация зависит от того, какая именно версия bpmonline используется (выше или ниже 7.3), но ключевым является указание свойства "className" при добавлении контрола. Пример с кнопкой для 7.3 и выше:
[javascript]
{
"operation": "insert",
"name": "DataGridActiveRowOpenAction",
"parentName": "DataGrid",
"propertyName": "activeRowActions",
"values": {
"className": "Terrasoft.Button",
"style": Terrasoft.controls.ButtonEnums.style.BLUE,
"caption": {"bindTo": "Resources.Strings.OpenRecordGridRowButtonCaption"},
"tag": "edit"
}
},
[/javascript]
Пример для 7.2 и ниже:
[javascript]
var btnConfig = {
type: ConfigurationEnums.CustomViewModelSchemaItem.CUSTOM_ELEMENT,
className: 'Terrasoft.Button',
caption: "Кнопка",
style: Terrasoft.controls.ButtonEnums.style.GREEN,
enabled: true,
click: {
bindTo: 'sayHello'
}
};
this.schema.leftPanel.push(btnConfig);
[/javascript]
Также можно создавать конфиг с помощью Ext.create:
[javascript]
var buttonsConfig = Ext.create('Terrasoft.Button', {
imageConfig: resources.localizableImages.CloseIcon,
style: Terrasoft.controls.ButtonEnums.style.TRANSPARENT,
classes: {wrapperClass: 'close-btn-user-class'},
selectors: {
wrapEl: '#googlemap'
},
click: {bindTo: 'onClickCloseMaps'}
});
[/javascript]
В этом случае можно также сразу указать свойство renderTo, передв туда контейнер, в который будет помещен контрол, тогда контрол сразу будет отрисован, иначе нужно будет вызывать метод render(renderTo). Это должно работать примерно одинаково для всех версий 7.х.