Форма редактирования пользовательских ограничений (AdvLimit)
В сгенерированных формах приложения существует возможность наложения пользовательских ограничений на списки. Пользовательские ограничения позволяют настроить правила, по которым отфильтровываются объекты, попадающие в список. Рассмотрим на примере:
'’Примечание: предполагается, что приложение уже сгенерировано’’
Диаграмма классов
Форма задания пользовательских ограничений
Допустим, что у нас есть список из 5 клиентов, заполненный следующим образом, и мы хотим выделить всех клиентов, прописанных в Перми:
Чтобы это сделать, необходимо открыть форму редактирования пользовательских ограничений и ввести соответствующее ограничение на поле Прописка
. Проверка весьма примитивна - проверяем строку на наличие в ней подстроки “Пермь”.
После того, как ограничение заполнено, необходимо нажать кнопку “Сохранить и применить
”, после возвращения на форму необходимо обновить список, чтобы к нему применилось ограничение.
Как можно заметить, количество Клиентов сократилось до 3х человек: остались только те, у кого в поле Прописка
была подстрока Пермь.
Чтобы вернуть список в исходное состояние, необходимо сбросить текущее ограничение, нажав кнопку “Сбросить ограничения
”
Пример настройки FilterSettings
FilterSettings позволяют настроить доступные для наложения пользовательских ограничений поля объекта. Рассмотрим пример:
Так выглядит форма настройки списка Кредитов. Предположим, что мы хотим отфильтровать список и вывести те кредиты, в которых было хотя бы одно погашение на сумму, превышающую 100 000.
Откроем форму создания пользовательских ограничений:
В дереве полей объекта Кредит есть все его мастера, а также собственные поля, но нет его детейлов. Чтобы в нем появились детейлы, необходимо создать FilterSetting через AdmConsole.
- Скачиваем AdmConsole
- Правим
AdmConsole.exe.cofig
, необходимо прописать путь к базе данных нашего приложения в ключ CustomizationString
<add key="CustomizationStrings" value="SERVER=localhost;Trusted_connection=yes;DATABASE=credits;" />
- При первом запуске приложения выберем папку с кешем сборок, можно указать путь к папке, куда собирается проект с Объектами, но предпочтительнее создать отдельную папку.
- В папку с кешем надо скопировать:
- DLL с объектами
<ИмяПроекта>(Objects).dll
- DLL с Формами
<ИмяПроекта>(Forms).dll
- IIS.WinUI.AdvancedFSCtrl.dll - находится в папке с AdmConsole.exe
- DLL с объектами
- Откроем
Специальные формы настройки
->Настройки фильтров
- Создадим новую настройку, нажав на кнопку
Создать
, откроется форма создания настроки. - На форме:
- Введем
Наименование
настройки - Выберем сборку из выпадающего списка
- Выберем тип
Кредит
- Выберем представление
КредитL
- Перейдем на вкладку
Детейлы
и нажмем кнопкуЗаполнить
. ‘‘Примечание: если при нажатии на кнопкуЗаполнить
появляется сообщение “Нет измененных детейлов”, необходимо сохранить настройку и попробовать снова’’
- Введем
- Сохраним настройку и выйдем из AdmConsole
Теперь необходимо указать приложению, что на списковой форме Кредитов
должна быть применена эта настройка фильтров. Варианты:
- Настройка в дизайнере VS
- Настройка через код. ‘‘Примечание: если нет возможности открыть проект в Visual Studio, но есть желание все-таки применить эту настройку, необходимо сделать следующее:
- Открыть папку с проектами форм
- Найти файл КредитL.cs и открыть его любым текстовым редактором (например Блокнотом)
- Найти метод GetDpdForm()
- Записать в скобки программиста
КредитL.GetDpdForm() end
следующую строчку кода:
form.FilterSettingName = "Кредиты";
- Сохранить файл’’
Теперь после сборки приложения зайдем на форму кредитов и откроем форму создания пользовательских ограничений:
Как видите, появилась возможность наложения ограничений на детейл Кредита. Создадим условие, фильтрующее все кредиты с погашениям свыше 100000. Нажмем Сохранить и применить
и обновим список на форме, получим: