Создание кнопки для каждой записи в разделе

Добрый день.

Добавляю кнопку для каждого элемента грида в разделе. Код следующий:

define('UsrSvcCatSection', ['ext-base', 'terrasoft', 'sandbox', 'UsrSvcCat',
        'UsrSvcCatSectionStructure', 'UsrSvcCatSectionResources'],
        function(Ext, Terrasoft, sandbox, entitySchema, structure, resources) {
        structure.userCode = function() {
                this.entitySchema = entitySchema;
                // ...
                // add sync button
                this.methods.syncThis = function() {
                        this.showInformationDialog("Bla-bla-bla!");
                };
                var baseGridConfig = this.methods.modifyGridConfig;
                this.methods.modifyGridConfig = function(gridConfig) {
                        if (baseGridConfig) {
                                baseGridConfig.call(this, gridConfig);
                        }
                        var syncButtonConfig = {
                                className: "Terrasoft.Button",
                                caption: "Bla-bla",
                                enabled: true,
                                style: "blue",
                                visible: true,
                                tag: 'sync'
                        };
                        var gConfig = gridConfig;                      
                        gConfig.activeRowActions.push(syncButtonConfig);
                        return gConfig;
                };
                var baseOnActiveRowAction = this.methods.onActiveRowAction;
                this.methods.onActiveRowAction = function(buttonTag, primaryColumnValue) {
                        switch (buttonTag) {
                                case "sync":
                                        this.syncThis();
                                        break;
                                default:
                                        baseOnActiveRowAction.call(this, buttonTag, primaryColumnValue);
                                        break;
                        }
                };
        };
        return structure;
});

Код на моей кнопке отрабатывает корректно, однако не работает код на стандартных кнопках "Просмотр", "Копировать" и т.п.

Также пытался выполнить

default:
        this.callParent(arguments);
        break;

Результат аналогичен - стандартные кнопки не отрабатывают.

Подскажите пожалуйста, в чем моя ошибка?

Нравится

4 комментария

Вероятно вы не вызываете родительский код метода при его переопределении (callParent).
Посмотрите в соседнюю тему http://www.community.terrasoft.ru/forum/topic/11933

Максим, спасибо за ответ. Однако в теме, на которую вы ссылаетесь, добавление кнопки происходит отличным от моего способом.

Я пробовал вызывать callParent - результат аналогичен. Стандартные кнопки не работают.

Проблема решена. Возможно кому-то поможет:

this.methods.onActiveRowAction = function(tag, id, parentOnActiveRowAction) {
    switch (tag) {
        case 'sync':
             this.syncThis();
             break;
        default:
             parentOnActiveRowAction.call(this, tag, id);
             break;
    }
}

Вопрос...а такое применимо для кнопок в редактируемом реестре.
Столкнулся что добавив к стандартным кнопкам свои...стандартные кнопки не работают.

onActiveRowAction: function(buttonTag) {
				var activeRow = this.getActiveRow();
				var position;
				//this.callParent(arguments);
				switch (buttonTag) {
					case "Up":
						position = activeRow.get("Position");
						if (position > 0) {
							position--;
							this.setPosition(activeRow.get("Id"), position, this.reloadGridData, this);
						}
						break;
					case "Down":
						position = activeRow.get("Position");
						position++;
						this.setPosition(activeRow.get("Id"), position, this.reloadGridData, this);
						break;
					default:
						break;
				}
			},
Показать все комментарии