7.2
onActiveRowAction
Добавление кнопки
Технические вопросы
7.x

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

Добрый день.

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

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 - результат аналогичен. Стандартные кнопки не работают.

Проблема решена. Возможно кому-то поможет:
[javascript]
this.methods.onActiveRowAction = function(tag, id, parentOnActiveRowAction) {
switch (tag) {
case 'sync':
this.syncThis();
break;
default:
parentOnActiveRowAction.call(this, tag, id);
break;
}
}
[/javascript]

Вопрос...а такое применимо для кнопок в редактируемом реестре.
Столкнулся что добавив к стандартным кнопкам свои...стандартные кнопки не работают.
[csharp]
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;
}
},
[/csharp]

Показать все комментарии