Уточнение модели

Для наложения ограничения на список сотрудников нужно уточнить диаграмму классов: вводится перечислимый тип Должность и атрибут Должность в класс Сотрудник.

Также нужно изменить представления СотрудникL и СотрудникE, чтобы атрибут Должность попал в них. Далее перегенерировать объекты и привести в соответствие базу данных.

Наложение ограничения на LookUp

В терминологии Flexberry кнопка, которая вызывает список для выбора, называется лукапом (LookUp).

Цель: Наложить ограничение на список сотрудников для выбора сотрудника, заполнившего заказ. В списке сотрудников находятся сотрудники с различными должностями. На форме редактирования заказа, при нажатии на лукап нужно вывести только менеджеров (чтобы избежать неправильного ввода со стороны пользователя системы).

Для того, чтобы указать ограничение необходимо:

1.Перейти к веб-странице ZakazE.aspx, на которой найти элемент управления MasterEditorAjaxLookUp и запомнить его ID (в данном случае ctrlМенеджер).

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()
{
	SQLWhereLanguageDef langdef = SQLWhereLanguageDef.LanguageDef;

	Function lf = langdef.GetFunction(langdef.funcEQ,
		new VariableDef(langdef.StringType, Information.ExtractPropertyName<Сотрудник>(x => x.Должность)), EnumCaption.GetCaptionFor(Должность.Менеджер));

	ctrlМенеджер.LimitFunction = lf;
}

Метод PreApplyToControls() вызывается перед распределением данных объекта по контролам страницы. На момент вызова этого метода объект уже вычитан из базы (либо при PostBack'e значения уже записаны в объект), можно совершить какие-то дополнительные манипуляции с объектом прежде чем его значения попадут на страницу. В коде данного метода формируется специальная конструкция LimitFunction, которая позволяет накладывать ограничения.

5.Перекомпилировать Solution, запустить приложение и проверить, как работают внесённые изменения (при нажатии на кнопку лукапа открывается список, в котором только менеджеры).

Перейти