Как добавить кнопку в реестр детали для активной строки
Вопрос
Как добавить кнопку в реестр детали для активной строки?
Ответ
Можно реализовать следующим образом:
В скрипте детали в блок diff добавить дополнительные свойства для DataGrid (название и заголовок кнопки приведены в качестве примера):
{ "operation": "merge", "name": "DataGrid", "values": { "activeRowAction": {"bindTo": "onActiveRowAction"}, "activeRowActions": [ { "className": "Terrasoft.Button", "style":this.Terrasoft.controls.ButtonEnums.style.BLUE, "markerValue": "myButtonAction", "tag": "myAction", "caption": "MyButton" } ] } }
После этого при выделении активной строки в детали должна появиться синяя кнопка с заголовком MyButton.
В массив activeRowActions можно добавить несколько кнопок, они все будут отображаться в выделенной строке так же, как и в реестре раздела.
Далее в методах той же детали необходимо реализовать метод onActiveRowAction. Данный метод в качестве аргументов принимает тэг кнопки и значение ключевой колонки выделенной строки. Если необходимо получить какие-либо другие значения выделенной строки, можно вызвать метод this.getActiveRow(), который возвращает всю модель выделенной строки:
methods: { onActiveRowAction: function(buttonTag, primaryColumnValue) { if (buttonTag === "myAction") { // весь код ниже можно убрать, он демонстрирует, что значения // primaryColumnValue и activeRowId равны var activeRow = this.getActiveRow(); var activeRowId = activeRow.get("Id"); console.log(primaryColumnValue); console.log(activeRowId); // дальше Ваша реализация ... } }, ... }