Делать неактивным пункт меню "Действия(Actions)" в зависимости от заполнения поля Lookup на странице раздела
Делать неактивным(Серым) пункт меню "Действия(Actions)" в зависимости от заполнения поля Lookup на странице раздела, не нашел такой информации , есть способ её реализовать?
Нравится
Добрый день, для этого вам нужно переопределить метод getSectionActions в нем необходимо для вашего пункта меню определить свойство отвечающее за доступность поля :
"Enabled": {bindTo: "isCustomActionEnabled"}
И реализовать метод isCustomActionEnabled (или как вы его назовете)
// Проверяет, на какой стадии находится заданный заказ. // activeRowId — значение первичной колонки выделенной записи реестра. isRunning: function(activeRowId) { // Получение коллекции данных списочного представления реестра раздела. var gridData = this.get("GridData"); // Получение модели выбранного заказа по заданному значению первичной колонки. var selectedOrder = gridData.get(activeRowId); // Получение свойства модели — статуса выбранного заказа. var selectedOrderStatus = selectedOrder.get("Status"); // Метод возвращает true, если статус заказа [Исполнение]. Иначе возвращает false. return selectedOrderStatus.value === OrderConfigurationConstants.Order.OrderStatus.Running; }, // Определяет, будет ли доступен пункт меню. isCustomActionEnabled: function() { // Попытка получения идентификатора активной (выбранной в реестре) записи. var activeRowId = this.get("ActiveRow"); // Если идентификатор определен и статус выбранного заказа // [Исполнение], то возвращается true, иначе — false. return activeRowId ? this.isRunning(activeRowId) : false; }
Добрый день, для этого вам нужно переопределить метод getSectionActions в нем необходимо для вашего пункта меню определить свойство отвечающее за доступность поля :
"Enabled": {bindTo: "isCustomActionEnabled"}
И реализовать метод isCustomActionEnabled (или как вы его назовете)
// Проверяет, на какой стадии находится заданный заказ. // activeRowId — значение первичной колонки выделенной записи реестра. isRunning: function(activeRowId) { // Получение коллекции данных списочного представления реестра раздела. var gridData = this.get("GridData"); // Получение модели выбранного заказа по заданному значению первичной колонки. var selectedOrder = gridData.get(activeRowId); // Получение свойства модели — статуса выбранного заказа. var selectedOrderStatus = selectedOrder.get("Status"); // Метод возвращает true, если статус заказа [Исполнение]. Иначе возвращает false. return selectedOrderStatus.value === OrderConfigurationConstants.Order.OrderStatus.Running; }, // Определяет, будет ли доступен пункт меню. isCustomActionEnabled: function() { // Попытка получения идентификатора активной (выбранной в реестре) записи. var activeRowId = this.get("ActiveRow"); // Если идентификатор определен и статус выбранного заказа // [Исполнение], то возвращается true, иначе — false. return activeRowId ? this.isRunning(activeRowId) : false; }
Колодяжный Владислав Эдуардович
Болшое спасибо! попробую!
Ковалев Александр Игоревич,
Я немного переделал метод, задача состоит в том, что бы делать пункт меню "Действия" активным по значению поля.
Есть проблема, что метод выполняется быстрее чем загружается значение поля, в итоге выходит ошибка что value отсутствует и страница зависает......
Как можно обойти этот момент?
isTask=this.get("CgrType").value;
isCustomActionEnabled: function() {
var isTask=this.get("CgrType").value;
if(isTask="232c3a11-9f31-4d43-9c3f-df24b012dfc0")
return true;
}
else{
return false;
}
},
1) при описании кнопки в getActions добавляем "Enabled": {bindTo: "IsSmthVisible"}. IsSmthVisible - аттрибут. не функция. причину вы сами описали - функция банально не успевает выполниться.
2) к полю dependencies, функцию-перещелкиватель на изменение + её же в onEntityInitialized вызывайте.
3) не забываем при простановке IsSmthVisible выполнять this.publishPropertyToSection (как-то так функция называется)