Уточнение модели
Для наложения ограничения на список сотрудников нужно уточнить диаграмму классов: вводится перечислимый тип Должность
и атрибут Должность
в класс Сотрудник
.
Также нужно изменить представления СотрудникL
и СотрудникE
, чтобы атрибут Должность
попал в них.
Далее перегенерировать объекты и привести в соответствие базу данных.
Наложение ограничения на LookUp
В терминологии Flexberry
кнопка, которая вызывает список для выбора, называется лукапом (LookUp
).
Цель: Наложить ограничение на список сотрудников для выбора сотрудника, заполнившего заказ. В списке сотрудников находятся сотрудники с различными должностями. На форме редактирования заказа, при нажатии на лукап нужно вывести только менеджеров (чтобы избежать неправильного ввода со стороны пользователя системы).
Для того, чтобы указать ограничение необходимо:
1.Перейти к веб-странице ZakazE.aspx
, на которой найти элемент управления MasterEditorAjaxLookUp
и запомнить его ID
(в данном случае ctrlМенеджер
).
designer
-файл. Для того, чтобы можно было обращаться к контролу по его ID
, нужно сохранить aspx
-файл, при этом сгенерируется designer
-файл и заполнится соответствующими свойствами. Необходимые контролы будут объявлены в коде, после чего их можно будет использовать.2.Перейти в серверный код веб-страницы ZakazE.aspx.cs
и изменить значение параметра flexberryautogenerated
на false
, иначе при очередной перегенерации исходного кода, внесённые изменения будут потеряны.
3.Прописать следующие строчки (для выбора вариантов используется сочетание Ctrl+Пробел):
using ICSSoft.STORMNET.FunctionalLanguage;
using ICSSoft.STORMNET.FunctionalLanguage.SQLWhere;
4.Изменить метод PreApplyToControls()
файла ZakazE.aspx.cs
следующим образом:
protected override void PreApplyToControls()
{
Function lf = FunctionBuilder.BuildEquals<Сотрудник>(x => x.Должность), Должность.Менеджер);
ctrlМенеджер.LimitFunction = lf;
}
Метод PreApplyToControls()
вызывается перед распределением данных объекта по контролам страницы. На момент вызова этого метода объект уже вычитан из базы (либо при PostBack'e
значения уже записаны в объект), можно совершить какие-то дополнительные манипуляции с объектом прежде чем его значения попадут на страницу.
В коде данного метода формируется специальная конструкция LimitFunction
, которая позволяет накладывать ограничения.
5.Перекомпилировать Solution
, запустить приложение и проверить, как работают внесённые изменения (при нажатии на кнопку лукапа открывается список, в котором только менеджеры).