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

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

JohnLemon

Well-Known Member
20.08.2014
274
5
32
Омск
#2
Если у view Data source не собственный а со страницы, то можно так например
view1 - это имя view(в свойствах var) в Data source страницы.
Код:
var formName = view1.getFirstDocument().getItemValueString('form');
Опять же если во вьюшке документы с одной формы, и на ней есть хоть один документ иначе не будет работать
 
14.12.2011
11
0
#3
Если у view Data source не собственный а со страницы, то можно так например
view1 - это имя view(в свойствах var) в Data source страницы.
Код:
var formName = view1.getFirstDocument().getItemValueString('form');
Опять же если во вьюшке документы с одной формы, и на ней есть хоть один документ иначе не будет работать
У меня View Name тоже постоянно меняются, в зависимости от того, какую категорию выберет пользователь.
 

JohnLemon

Well-Known Member
20.08.2014
274
5
32
Омск
#4
Что то ты мудришь там сильно, можешь описать на простом примере что ты хочешь. С View ты вряд ли форму получишь, они могут строится с нескольких форм и к формам вообще не привязаны, она может быть только у документа и то не 100%.
Тут почитай:
Чтобы видеть этот контент необходимо: Войти или зарегистрироваться

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

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

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

JohnLemon

Well-Known Member
20.08.2014
274
5
32
Омск
#6
при клике на Outline Entry появляется соответственно свой View, в который вшита кнопка "Новый документ".
Как ты понимаешь какой View открыть ? И еще можешь код скинуть нажатия на Outline Entry
вшита кнопка "Новый документ".
Вшита в столбце ?? На каждый док своя кнопка ?
 
14.12.2011
11
0
#7

Вложения

  • 131.1 КБ Просмотры: 13
  • 5.8 КБ Просмотры: 13
  • 194.7 КБ Просмотры: 13

lionk

Well-Known Member
05.04.2007
310
3
#8
Вангую:
он хочет универсальную кнопку, чтоб из xpage в которую загрузилось представление, кнопка создавала документ с формой документов этого представления.

если да то:
делаешь кнопку в которой будет гигантский свич.
имя представления - ссылка на хстраничку соответствующего документа
имя представления берёшь из датасорса.
 
14.12.2011
11
0
#9
А есть другой способ.
Может через 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 тоже, поэтому иногда не успевала обновляться информация и документ создавался не в той форме.
 

lionk

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