Всем доброго времени суток!
Есть задача: по нажатию кнопки в модальном окне открывается окно с выбором
полей текущего раздела. Выбирается любое поле и добавляется в модальное окно. И так далее. То есть получается добавленные поля существуют только пока открыто модальное окно. Это нужно для создания отчета Excel, где указанные значения в полях будут фильтрами.
В разделе полей много. Плюс в будущем поля могут добавляться. Поэтому забивать их жестко в diff смысла не вижу.
Вопрос: есть ли возможность как-то динамически наполнять массив diff полями?
Нравится
А если создать фиксированное количество виртуальных полей и программно их скрывать, показывать, а также менять заголовки?
Либо в этом окне использовать редактируемый реестр с двумя колонками: название и значение. Примерно такой обсуждали в этой теме, но там предлагали решение при помощи view, что может в Вашем случае не подойти.
Наконец, если формируете фильтр по значениям полей, можно воспользоваться готовым механизмом динамических групп, где такой тоже настраивается. То есть стандартными средствами создать группу, а затем выбрать её в окне настроек отчёта, а затем программно разбирать её фильтр.
А вообще, описанное Вами очень похоже на автогенерируемую страницу в БП. Может, с её помощью получится?
Зверев Александр,
Спасибо за ответ. Фиксированное количество виртуальных полей не вариант, так как в будущем клиент самостоятельно может добавлять поля, которые тоже должны выбираться. Мне подсказали создать на странице модального окна ContainerList. Вот такой элемент diff:
{ "operation": "insert", "name": "CommunicationsContainer", "parentName": "ContainerListContainer", "propertyName": "items", "values": { "generator": "ConfigurationItemGenerator.generateContainerList", "idProperty": "Id", "collection": "CaseFieldCollection", "observableRowNumber": 10, "onGetItemConfig": "getCaseItemConfig" } }
"collection" - коллекция всех полей, которые могут быть отображены в модальном окне.
"onGetItemConfig" - метод, где формируется структура каждого поля.
Только вот до конца не ясно как с этим всем работать.