Как сделать форму с динамическим количеством полей

Введение

Допустим, у нас задача создать форму, где будет в зависимости от itemID разное количество полей разных типов (список, комбик и т.д.).

Как это реализовать

  1. Создаем заведомо большое количество полей типа Строка с именам p1, p2, ..., p20.
  2. Используем возможность динамически менять тип поля
  3. Для формы ставим динамическую разметку в GetItem через Makeup в SELECT 2 

Т.е. в GetItem формируем нужные значения в SELECT 1 и меняем типы данных по необходимости (для списков будут усложнения - нужно будет генерировать dict процедуры заранее) и в SELECT 2 динамически устанавливаем кастомную верстку в Makeup (т.е. не используем поле формы Разметка).

 В SaveItem мы так же динамически определяем как нам надо использовать p1, ..., p20 и реализуем логику их обработки на основе itemID 

Примечание. Лучше сильно не увлекаться этими гибкими возможностями, т.к. при большом количестве режимов такой универсальной формы будет сложно вносить изменения - внес правки и надо проверять все режимы работы (т.к. может какой то начать сбоить). Как альтернативу рассмотреть варианты подформ - т.е. изучаем что у нас в itemID и на основе него выводим разные изолированные подформы. Это упрощает отладку и изолирует ошибки. 

 

 

 

Страница-источник на сайте falconspace.ru