Вопрос

Делать неактивным пункт меню "Действия(Actions)" в зависимости от заполнения поля Lookup на странице раздела

Делать неактивным(Серым) пункт меню "Действия(Actions)" в зависимости от заполнения поля Lookup на странице раздела, не нашел такой информации , есть способ её реализовать?

У меня такой же вопрос

4 комментария
Лучший ответ

Добрый день, для этого вам нужно переопределить метод 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 (как-то так функция называется)

 

Войдите или зарегистрируйтесь, чтобы комментировать