Как менять formname в data source

  • Автор темы Mario1985
  • Дата начала
M

Mario1985

Есть стандартный web интерфейс базы.
Отображение в web идет по категориям (у каждой категории своя форма и свой вид, поля везде одинаковые).
Выбор категории слева, подкатегории отображаются справа. Если раскрыть подкатегории, то отображаются документы.
В каждом виде есть своя кнопка "Новый документ", при нажатии на нее создается xpages.
Как можно имея одну xpage, менять динамически Data source?
То есть, как можно передать со стандартного View значение формы, чтобы вписать его в formName в зависимости от того, какой вид документа пользователь хочет создать.
 
J

JohnLemon

Если у view Data source не собственный а со страницы, то можно так например
view1 - это имя view(в свойствах var) в Data source страницы.
Код:
var formName = view1.getFirstDocument().getItemValueString('form');
Опять же если во вьюшке документы с одной формы, и на ней есть хоть один документ иначе не будет работать
 
M

Mario1985

Если у view Data source не собственный а со страницы, то можно так например
view1 - это имя view(в свойствах var) в Data source страницы.
Код:
var formName = view1.getFirstDocument().getItemValueString('form');
Опять же если во вьюшке документы с одной формы, и на ней есть хоть один документ иначе не будет работать
У меня View Name тоже постоянно меняются, в зависимости от того, какую категорию выберет пользователь.
 
J

JohnLemon

Что то ты мудришь там сильно, можешь описать на простом примере что ты хочешь. С View ты вряд ли форму получишь, они могут строится с нескольких форм и к формам вообще не привязаны, она может быть только у документа и то не 100%.
Тут почитай:

С view примерно тоже самое
 
M

Mario1985

Что то ты мудришь там сильно, можешь описать на простом примере что ты хочешь. С View ты вряд ли форму получишь, они могут строится с нескольких форм и к формам вообще не привязаны, она может быть только у документа и то не 100%.
Тут почитай:

С view примерно тоже самое
Есть классические формы, у каждой формы есть классический View (не XPages) их около 20 штук.
Все это отображается через классический Shared Elements - Outline.
Outline Entry это классическое View.
при клике на Outline Entry появляется соответственно свой View, в который вшита кнопка "Новый документ".
Как сделать так, чтобы при клике на "Новый документ" появлялась своя страница XPage?

Из каждого классического View открыть свою Xpage со своим data source?
XPage, при этом всего одна, так как все поля одинаковые, меняться должен только data source.
 
J

JohnLemon

при клике на Outline Entry появляется соответственно свой View, в который вшита кнопка "Новый документ".
Как ты понимаешь какой View открыть ? И еще можешь код скинуть нажатия на Outline Entry
вшита кнопка "Новый документ".
Вшита в столбце ?? На каждый док своя кнопка ?
 
M

Mario1985

Вложения

  • 1.jpg
    1.jpg
    75,3 КБ · Просмотры: 580
  • 2.png
    2.png
    2,4 КБ · Просмотры: 549
  • 3.jpg
    3.jpg
    109,5 КБ · Просмотры: 551
L

lionk

Вангую:
он хочет универсальную кнопку, чтоб из xpage в которую загрузилось представление, кнопка создавала документ с формой документов этого представления.

если да то:
делаешь кнопку в которой будет гигантский свич.
имя представления - ссылка на хстраничку соответствующего документа
имя представления берёшь из датасорса.
 
M

Mario1985

А есть другой способ.
Может через managed bean? Ну или что-то другое, но не громадный свич.
Сделал через Profile Document, передаю значение формы с вью в Profile Document, а оттуда забираю beforePageLoad event который в xpages:
var currdb:NotesDatabase = database;
var profdoc:NotesDocument = currdb.getProfileDocument("frmProfile","");
var showRefInfo = profdoc.getItemValueString("ShowReferenceInformation");
sessionScope.put("showRefInfo",@Text(showRefInfo));

Но не подходит, так как слишком долго обновляется страница и Profile Document тоже, поэтому иногда не успевала обновляться информация и документ создавался не в той форме.
 
L

lionk

Можно гланды удалять не через горло. Но я бы на такое не согласился.
Твою задачу я бы решил так. Не хочешь свич, тогда либо придумывай какю то транспортную функцию, либо привязывайся к стандартизации названий (алиас представления view1 ,берём этот алиас и делаем openXpage("view1"+"doc1"+".xsp") - получаем открывшейся xpage привязанный к форме doc1).
Ну тут в общем пространство для творчества неограниченно.
Может возможно добраться через датасорс к объекту представления а там и к формуле отбора, которую распарсить и по результатам открывать соответствующую страницу, но тут тоже Ифы и Свитчи.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!