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

Тема в разделе "Lotus - Xpages", создана пользователем Mario1985, 26 фев 2015.

  1. Mario1985

    Mario1985 Member

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

    JohnLemon Well-Known Member

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

    Mario1985 Member

    Регистрация:
    14 дек 2011
    Сообщения:
    11
    Симпатии:
    0
    У меня View Name тоже постоянно меняются, в зависимости от того, какую категорию выберет пользователь.
     
  4. JohnLemon

    JohnLemon Well-Known Member

    Регистрация:
    20 авг 2014
    Сообщения:
    274
    Симпатии:
    5
    Что то ты мудришь там сильно, можешь описать на простом примере что ты хочешь. С View ты вряд ли форму получишь, они могут строится с нескольких форм и к формам вообще не привязаны, она может быть только у документа и то не 100%.
    Тут почитай:
    http://www.ibm.com/developerworks/ru/library/ls-domdes-xpages/
    С view примерно тоже самое
     
  5. Mario1985

    Mario1985 Member

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

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

    JohnLemon Well-Known Member

    Регистрация:
    20 авг 2014
    Сообщения:
    274
    Симпатии:
    5
    Как ты понимаешь какой View открыть ? И еще можешь код скинуть нажатия на Outline Entry
    Вшита в столбце ?? На каждый док своя кнопка ?
     
  7. Mario1985

    Mario1985 Member

    Регистрация:
    14 дек 2011
    Сообщения:
    11
    Симпатии:
    0
    на каждый док своя кнопка
     

    Вложения:

    • 1.jpg
      1.jpg
      Размер файла:
      131,1 КБ
      Просмотров:
      8
    • 2.png
      2.png
      Размер файла:
      5,8 КБ
      Просмотров:
      8
    • 3.jpg
      3.jpg
      Размер файла:
      194,7 КБ
      Просмотров:
      8
  8. lionk

    lionk Well-Known Member

    Регистрация:
    5 апр 2007
    Сообщения:
    308
    Симпатии:
    3
    Вангую:
    он хочет универсальную кнопку, чтоб из xpage в которую загрузилось представление, кнопка создавала документ с формой документов этого представления.

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

    Mario1985 Member

    Регистрация:
    14 дек 2011
    Сообщения:
    11
    Симпатии:
    0
    А есть другой способ.
    Может через 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 тоже, поэтому иногда не успевала обновляться информация и документ создавался не в той форме.
     
  10. lionk

    lionk Well-Known Member

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

Поделиться этой страницей