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

xbeetle

New Member
29.10.2015
3
0
#1
Когда виды организованы через xe:dynamicContent и в виде листаем страницы, то после того, как открыли на какой-то странице документ, по кнопке "Назад" из документа надо вернуться в тот вид из которого открыли документ и на нужную страницу (к состоянию вида перед открытием документа). Такой вот вопрос ...
 

xbeetle

New Member
29.10.2015
3
0
#2
Дополнение: документ открывается не в отдельной странице, а так же в динамическом контенте.
 

NickProstoNick

Статус как статус :)
Lotus team
22.08.2008
1 790
42
#3
Дополнение: документ открывается не в отдельной странице, а так же в динамическом контенте.
не суть важно

Когда виды организованы через xe:dynamicContent и в виде листаем страницы, то после того, как открыли на какой-то странице документ, по кнопке "Назад" из документа надо вернуться в тот вид из которого открыли документ и на нужную страницу (к состоянию вида перед открытием документа). Такой вот вопрос ...
во время клика сохраняй состояние вида в переменную окружения.
А по кнопке "Назад" переключай снова на вид и обновляй его. Должно работать.
Копай в сторону свойства first в секции data у вида
 
15.12.2015
21
0
#4
в extension library есть контрол pagerSaveState
Пример
XML:
<xe:pagerSaveState id="pagerSaveState1" for="viewPanel1"
 globalRows="true">
 </xe:pagerSaveState>
При возврате с документа в вид перед тем как вернуться нужно вызвать
viewStateBean.restoreState = true;

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

Чтобы видеть этот контент необходимо: Войти или зарегистрироваться
 
Последнее редактирование модератором:

Amfion

Well-Known Member
26.05.2010
143
4
#5
в extension library есть контрол pagerSaveState
Пример
XML:
<xe:pagerSaveState id="pagerSaveState1" for="viewPanel1"
globalRows="true">
</xe:pagerSaveState>
При возврате с документа в вид перед тем как вернуться нужно вызвать
viewStateBean.restoreState = true;

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

Чтобы видеть этот контент необходимо: Войти или зарегистрироваться
Может быть есть пример. У меня что то не выходит.

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

Код:
<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>
Возврат с документа в вид
Код:
<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>
В результате перехода состояние вида сбрасывается.
 
15.12.2015
21
0
#6
Если у вас и вид и документ на одной странице то куда вы хотите возвратиться? Если у вас цели по клику по виду показывать соответствующий документ, то pagersavestate тут не при чем и я вас не правильно понял. Еще вопрос зачем вам refreshMode="complete"? Если вам нужно менять только часть страницы. Вы мне опишите цель а я вам помогу, а так я ничего не понял извините
 

Amfion

Well-Known Member
26.05.2010
143
4
#7
Если у вас и вид и документ на одной странице то куда вы хотите возвратиться? Если у вас цели по клику по виду показывать соответствующий документ, то pagersavestate тут не при чем и я вас не правильно понял. Еще вопрос зачем вам refreshMode="complete"? Если вам нужно менять только часть страницы. Вы мне опишите цель а я вам помогу, а так я ничего не понял извините
В документе надо реализовать кнопку назад. И по этой кнопке надо вернуться в последний вид в том состоянии в котором он был перед открытием документа.

Для примера
Есть 2 вида клиенты по дате регистрации и по городу.
Оба эти вида как и форма документа клиент находятся в dynamic content.
Если пользователь открывает документ с 5 страницы view, надо что б при возврате он попал на туже страницу вида ну и что б если категории были свернуты оставались также.
 
15.12.2015
21
0
#8
Там где вид кидаете
<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">
 

Amfion

Well-Known Member
26.05.2010
143
4
#9
Там где вид кидаете
<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">
Нет и вид и форма на одной страницы. Да если на разных все работает. И надо как то вернуться с формы в вид на тоже место где было открытие формы
 
15.12.2015
21
0
#10
Так если вид и форма на одной странице то куда вы хотите вернуться если вы уже на странице где вид? Если вам нужно чтобы просто поменялся dynamicContent1 а не вид то просто уберите refreshMode="complete" а сделайте partial refresh dynamicContent1 и тогда вид останется такие каким был, но если вы в форме жмете кнопку с refreshMode="complete" и хотите чтобы вид остался прежним извините в такой конструкции pagersavestate не работает и вашей проблемы не решит конечно.
 

Amfion

Well-Known Member
26.05.2010
143
4
#11
Что вид при переходе с формы на вид (замена контента) скидывает пейджер на 1 страницу. Возврат сделал так
Код:
<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>
Переход с вида на форму
Код:
<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>
На странице динамик контент выглядит так
Код:
<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>
 
15.12.2015
21
0
#12
а вот теперь мне все ясно :) Мое мнение подход этот накладывает некоторые ограничения. А чего вам мешает уйти от него и сделать 2 разных страницы одна с видом а одна с формой и тогда у вас все будет ок. Зачем так усложнять? Какие преимущества дает этот подход кроме явных недостатков. Ладно если по существу

то как открыть ту страницу что была можно тут
Чтобы видеть этот контент необходимо: Войти или зарегистрироваться


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

Чтобы видеть этот контент необходимо: Войти или зарегистрироваться
 

Amfion

Well-Known Member
26.05.2010
143
4
#13
А разные страницы если сделать то возникает другая проблема. С навигатор контрол в левой колонке в applicationLayout. У меня в нем содержаться пункты с подпунктами. Первоначально все пункты свернуты и при открытии формы на новой странице они также будут все свернуты. Может есть возможность передавать состояние navigator при переходе на новую страницую
 
15.12.2015
21
0
#16
Извини не работает оказывается только если history.back то срабатывает а так нет.
Тогда добавь скринт на форму
JavaScript:
XSP.addOnLoad(function(){
var li = $('header.lotusMenuHeader').find('li.lotusSelected'); //ищем выбранный li в навигаторе 
var p = $(li).parents('li'); //берем его родителя 
$(p).css({'display':''}); // показываем submenu
})