Вопрос
Как добавить кнопку в реестр детали для активной строки?
Ответ
Можно реализовать следующим образом:
В скрипте детали в блок 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);
// дальше Ваша реализация
...
}
},
...
}