Кнопка "назад" и динамический контент

Тема в разделе "Lotus - Xpages", создана пользователем xbeetle, 25 ноя 2015.

  1. xbeetle

    xbeetle New Member

    Регистрация:
    29 окт 2015
    Сообщения:
    3
    Симпатии:
    0
    Когда виды организованы через xe:dynamicContent и в виде листаем страницы, то после того, как открыли на какой-то странице документ, по кнопке "Назад" из документа надо вернуться в тот вид из которого открыли документ и на нужную страницу (к состоянию вида перед открытием документа). Такой вот вопрос ...
     
  2. xbeetle

    xbeetle New Member

    Регистрация:
    29 окт 2015
    Сообщения:
    3
    Симпатии:
    0
    Дополнение: документ открывается не в отдельной странице, а так же в динамическом контенте.
     
  3. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    не суть важно

    во время клика сохраняй состояние вида в переменную окружения.
    А по кнопке "Назад" переключай снова на вид и обновляй его. Должно работать.
    Копай в сторону свойства first в секции data у вида
     
  4. Hogmuzzle

    Hogmuzzle Member

    Регистрация:
    15 дек 2015
    Сообщения:
    21
    Симпатии:
    0
    в extension library есть контрол pagerSaveState
    Пример
    Код (XML):
    <xe:pagerSaveState id="pagerSaveState1" for="viewPanel1"
    globalRows="true">
     </xe:pagerSaveState>
    При возврате с документа в вид перед тем как вернуться нужно вызвать
    viewStateBean.restoreState = true;

    Попробуйте его.

    http://xcellerant.net/2013/08/08/xpages-data-views-6-pager-save-state-control/
     
    #4 Hogmuzzle, 15 дек 2015
    Последнее редактирование модератором: 15 дек 2015
  5. Amfion

    Amfion Well-Known Member

    Регистрация:
    26 май 2010
    Сообщения:
    138
    Симпатии:
    3
    Может быть есть пример. У меня что то не выходит.

    Есть страница. На страницу добавил динамик контент в котором 2 custom control. Первый контрол содержит вид с документами, 2 содержит форму документа.
    Открытие с вида документа делаю так:

    Код (Text):
    <xp:viewColumn columnName="Claim_Num_Disp" id="viewColumn6" displayAs="link" openDocAsReadonly="true">
    <xp:viewColumnHeader value="№ заявки"
    id="viewColumnHeader6">
    </xp:viewColumnHeader>
    <xp:eventHandler event="onclick" submit="true" refreshMode="complete">
    <xp:this.action>
    <xp_1:changeDynamicContentAction for="dynamicContent1"
    facetName="document">
    <xp_1:this.parameters>
    <xp:parameter name="action"
    value="openDocument">
    </xp:parameter>
    <xp:parameter name="documentId"
    value="#{javascript:rowData.getDocument().getNoteID()}">
    </xp:parameter>
    </xp_1:this.parameters>
    </xp_1:changeDynamicContentAction>
    </xp:this.action></xp:eventHandler></xp:viewColumn>
     
    Возврат с документа в вид
    Код (Text):
    <xp:button value="Label" id="button1">
     
     
     
     
    <xp:eventHandler event="onclick" submit="true" refreshMode="complete">
     
    <xp:this.action>
     
     
     
     
    <xp:actionGroup>
     
    <xp:executeScript script="#{javascript:viewStateBean.restoreState = true;}">
     
    </xp:executeScript><xp_1:changeDynamicContentAction for="dynamicContent1"
     
    facetName="view">
     
    </xp_1:changeDynamicContentAction>
     
     
     
     
    </xp:actionGroup>
     
    </xp:this.action></xp:eventHandler></xp:button>
     
    В результате перехода состояние вида сбрасывается.
     
  6. Hogmuzzle

    Hogmuzzle Member

    Регистрация:
    15 дек 2015
    Сообщения:
    21
    Симпатии:
    0
    Если у вас и вид и документ на одной странице то куда вы хотите возвратиться? Если у вас цели по клику по виду показывать соответствующий документ, то pagersavestate тут не при чем и я вас не правильно понял. Еще вопрос зачем вам refreshMode="complete"? Если вам нужно менять только часть страницы. Вы мне опишите цель а я вам помогу, а так я ничего не понял извините
     
  7. Amfion

    Amfion Well-Known Member

    Регистрация:
    26 май 2010
    Сообщения:
    138
    Симпатии:
    3
    В документе надо реализовать кнопку назад. И по этой кнопке надо вернуться в последний вид в том состоянии в котором он был перед открытием документа.

    Для примера
    Есть 2 вида клиенты по дате регистрации и по городу.
    Оба эти вида как и форма документа клиент находятся в dynamic content.
    Если пользователь открывает документ с 5 страницы view, надо что б при возврате он попал на туже страницу вида ну и что б если категории были свернуты оставались также.
     
  8. Hogmuzzle

    Hogmuzzle Member

    Регистрация:
    15 дек 2015
    Сообщения:
    21
    Симпатии:
    0
    Там где вид кидаете
    <xe:pagerSaveState id="pagerSaveState1" for="viewPanel1"
    globalRows="true">
    </xe:pagerSaveState>
    for="viewPanel1" это id вида

    в документе перед тем как вернуться viewStateBean.restoreState = true;

    Но у меня еще вопрос Если у вас вид на одной странице а форма на другой, то для чего это??

    <xp_1:changeDynamicContentAction for="dynamicContent1"
    facetName="document">
    <xp_1:this.parameters>
    <xp:parameter name="action"
    value="openDocument">
    </xp:parameter>
    <xp:parameter name="documentId"
    value="#{javascript:rowData.getDocument().getNoteID()}">
    </xp:parameter>
    </xp_1:this.parameters>
    </xp_1:changeDynamicContentAction>

    почему вы используете changeDynamicContentAction если вы просто открываете документ по клику по линку и почему это так реализовано? И при возврате на вид почему вы опять используете
    changeDynamicContentAction for="dynamicContent1" facetName="view">
     
  9. Amfion

    Amfion Well-Known Member

    Регистрация:
    26 май 2010
    Сообщения:
    138
    Симпатии:
    3
    Нет и вид и форма на одной страницы. Да если на разных все работает. И надо как то вернуться с формы в вид на тоже место где было открытие формы
     
  10. Hogmuzzle

    Hogmuzzle Member

    Регистрация:
    15 дек 2015
    Сообщения:
    21
    Симпатии:
    0
    Так если вид и форма на одной странице то куда вы хотите вернуться если вы уже на странице где вид? Если вам нужно чтобы просто поменялся dynamicContent1 а не вид то просто уберите refreshMode="complete" а сделайте partial refresh dynamicContent1 и тогда вид останется такие каким был, но если вы в форме жмете кнопку с refreshMode="complete" и хотите чтобы вид остался прежним извините в такой конструкции pagersavestate не работает и вашей проблемы не решит конечно.
     
  11. Amfion

    Amfion Well-Known Member

    Регистрация:
    26 май 2010
    Сообщения:
    138
    Симпатии:
    3
    Что вид при переходе с формы на вид (замена контента) скидывает пейджер на 1 страницу. Возврат сделал так
    Код (Text):
    <xp:button value="Label" id="button1">
     
    <xp:eventHandler event="onclick" submit="true" refreshMode="partial" refreshId="dynamicContent1">
    <xp:this.action>
    <xp_1:changeDynamicContentAction for="dynamicContent1"
    facetName="view">
    </xp_1:changeDynamicContentAction>
    </xp:this.action></xp:eventHandler></xp:button>
    Переход с вида на форму
    Код (Text):
    <xp:viewColumn columnName="Claim_Num_Disp" id="viewColumn6" displayAs="link" openDocAsReadonly="true">
    <xp:viewColumnHeader value="№ заявки"
    id="viewColumnHeader6">
    </xp:viewColumnHeader>
     
    <xp:eventHandler event="onclick" submit="true" refreshMode="partial" refreshId="dynamicContent1">
    <xp:this.action>
    <xp_1:changeDynamicContentAction facetName="document"
    for="dynamicContent1">
    </xp_1:changeDynamicContentAction>
    </xp:this.action></xp:eventHandler></xp:viewColumn>
    На странице динамик контент выглядит так
    Код (Text):
    <xe:dynamicContent id="dynamicContent1" defaultFacet="view" useHash="true"><xp:this.facets>
    <xc:testDocumentDC xp:key="document"></xc:testDocumentDC>
    <xc:testViewDC xp:key="view"></xc:testViewDC>
    </xp:this.facets></xe:dynamicContent>
     
  12. Hogmuzzle

    Hogmuzzle Member

    Регистрация:
    15 дек 2015
    Сообщения:
    21
    Симпатии:
    0
    а вот теперь мне все ясно :) Мое мнение подход этот накладывает некоторые ограничения. А чего вам мешает уйти от него и сделать 2 разных страницы одна с видом а одна с формой и тогда у вас все будет ок. Зачем так усложнять? Какие преимущества дает этот подход кроме явных недостатков. Ладно если по существу

    то как открыть ту страницу что была можно тут
    http://www.mydominolab.com/2010/10/repeat-control-better-pagination.html

    открыть категорию что была можно увидеть как это делается тут

    http://planetlotus.org/profiles/kazunoritatsuki_131142
     
  13. Amfion

    Amfion Well-Known Member

    Регистрация:
    26 май 2010
    Сообщения:
    138
    Симпатии:
    3
    А разные страницы если сделать то возникает другая проблема. С навигатор контрол в левой колонке в applicationLayout. У меня в нем содержаться пункты с подпунктами. Первоначально все пункты свернуты и при открытии формы на новой странице они также будут все свернуты. Может есть возможность передавать состояние navigator при переходе на новую страницую
     
  14. Hogmuzzle

    Hogmuzzle Member

    Регистрация:
    15 дек 2015
    Сообщения:
    21
    Симпатии:
    0
    у навигатора есть свойство keepState
     
  15. Amfion

    Amfion Well-Known Member

    Регистрация:
    26 май 2010
    Сообщения:
    138
    Симпатии:
    3
    Пробовал у меня не работает. Если есть пример можешь выложить?
     
  16. Hogmuzzle

    Hogmuzzle Member

    Регистрация:
    15 дек 2015
    Сообщения:
    21
    Симпатии:
    0
    Извини не работает оказывается только если history.back то срабатывает а так нет.
    Тогда добавь скринт на форму
    Код (Javascript):
    XSP.addOnLoad(function(){
    var li = $('header.lotusMenuHeader').find('li.lotusSelected'); //ищем выбранный li в навигаторе
    var p = $(li).parents('li'); //берем его родителя
    $(p).css({'display':''}); // показываем submenu
    })
     
Загрузка...
Похожие Темы - Кнопка назад динамический
  1. azzza
    Ответов:
    9
    Просмотров:
    522
  2. Markiz
    Ответов:
    4
    Просмотров:
    1.401
  3. YGol
    Ответов:
    9
    Просмотров:
    1.345
  4. Rosna
    Ответов:
    11
    Просмотров:
    2.279
  5. bang
    Ответов:
    0
    Просмотров:
    1.308

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