2014-07-10 2 views
0

Я хочу знать, могу ли я нажать кнопку в XPage и динамически создать представление Domino View, а затем показать его в панели управления на той же странице. Причина, по которой я хочу сделать это, состоит в том, что у меня есть категоризированное представление, и я не хочу потерять данные категории, используя полнотекстовый поиск. Поэтому я думаю о динамическом создании нового представления и передаче моих параметров поиска, таких как дата окончания или дата начала, в формулу выбора вида.Динамически создайте представление домино в XPages

Возможно ли это? Также приветствуется любое другое альтернативное решение.

ответ

4

да, вы можете, но не хотите. Вид Domino занимает пространство в базе данных и довольно долгое время для его первого использования. Таким образом, вы получаете множество просмотров, занимающих пространство, и необходимость корректировать пространство базы данных после удаления. Время ответа будет сосать большое время.

Категории, показанные в виде заметок no web interaction pattern, так что вы можете решить проблему, которая на самом деле не должна существовать.

Предпочтительный метод для Domino-приложения - это навигация/сверление по запросу. Но вы можете сделать FTSearch, где вы добавляете свою категорию к параметрам поиска и отображаете свои результаты в контроле повтора вместо контроля вида. Там у вас больше контроля над внешним видом.

+0

У вас также могут быть проблемы, потому что индекс представления не будет создан. В лучшем случае он будет ждать и может тайм-аут/вернуть ничего. –

3

Независимо от того, является ли это наилучшим решением, ответ на ближайший вопрос о создании представления на лету - да. В классе базы данных есть несколько методов «createView», которые позволяют создавать новое представление, полностью из нуля или на основе именованного другого представления. Оттуда вы можете использовать методы «setSelectionFormula» и «createColumn» в созданном представлении для создания того, что вы хотите. Вы не можете делать ВСЕ с этими методами, но этого может быть достаточно.

Одна из проблем, с которой вы, вероятно, столкнетесь, - это доступ к ACL: вам понадобятся права Дизайнера для базы данных, которых, скорее всего, не будет у обычного пользователя. Если вы используете объект sessionAsSigner для извлечения версии подписывающего БД (скажем, «var signerDB = sessionAsSigner.getDatabase (database.getServer(), database.getFilePath())»), вы можете работать оттуда. В верхней части моей головы я не помню, если вам также понадобится установить параметр «Максимальный доступ в Интернет» на последней вкладке ACL в Designer, но вы можете.

+0

sessionAsSigner может преодолеть ACL - но не рекомендуется создавать представления «на лету» – stwissel

+0

ACL не является проблемой - вы можете использовать sessionAsSigner или агент, выполняемый от имени ... Производительность - это проблема. Для больших данных пользователь может подождать минуты, чтобы индексировать представление. В худшем случае (семафоры) может испортить весь сервер. –

1

Я предполагаю, что вы имеете в виду проблему, которая существует, когда вы выбираете документы на основе категории. Это то, что я нахожу очень раздражающим, и я желаю, чтобы это можно было включить и выключить. Это имеет смысл для встроенных просмотров, но не для других.

Что я сделал для решения этой проблемы, так это включение значения категории в следующий столбец. Таким образом, этот текст все еще можно было увидеть, даже если это был плоский вид.

Кроме того, вы также можете изучить использование ретранслятора и создать свой собственный способ представления информации. Это будет использоваться вместо элемента управления (Dynamic) ViewPanel. Затем вы можете представить информацию любым способом, если хотите, до тех пор, пока она будет возвращена в наборе просмотра.

Счастливое программирование!

Смежные вопросы