Сценарии при изменении на форме
Очень часто при настройке конфигурации возникает необходимость повлиять на отображение тех или иных полей в зависимости от значения других полей. В системе ELMA вы можете сконфигурировать сценарии на форме (или динамические формы) для достижения нужного результата.
Основные варианты использования
При помощи сценариев на форме вы можете сделать следующие преобразования:
- cкрыть/отобразить поле на форме;
- установить полю признак Только для чтения;
- установить обязательность заполнения поля.
При создании метода для сценария на форме, можно заметить, что вместе с контекстом приходит еще один аргумент типа EleWise.ELMA.Model.Views.FormViewBuilder<Context> (где Context – это тип контекста), который как раз содержит специальный класс-построитель для настройки формы. Ниже приведен пример использования возможностей данного класса
{
form.For(c => c.Kontakt).ReadOnly(true); //Устанавливаем для переменной Контакт на форме признак "только для чтения"
form.For(c => c.ImyaPitomca).ReadOnly(false).Required(true); //Устанавливаем для переменной Имя питомца признаки видимости и обязательности заполнения
form.For(c => c.VozrastPitomca).Visible(false); //Скрываем переменную Возраст питомца с формы
}
Тут нужно пояснить, что при обращении вида form.For(c => c.Kontakt) в функцию For передается лямбда-выражение, которое определяет для какой переменной производить дальнейшую настройку. Все вызовы для одной и той же переменной идут цепочкой методов, но это не обязательное условие, вы можете вызывать методы сколько угодно раз, действие будет иметь последний вызванный метод.
{
var isContactSelected = context.Kontakt != null;
if(isContactSelected)
{
form.For(c => c.Kontakt).ReadOnly(true);
}
else
{
form.For(c => c.Kontakt).ReadOnly(false).Required(true);
}
}
В любом случае инструмент для использования сценариев на форме достаточно гибкий и позволяет реализовать массу возможностей для оптимизации бизнеса.