• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Xe:djtabcontainer Переключить Вкладку

  • Автор темы susinmn
  • Дата начала
S

susinmn

Подскажите как программно переключить вкладку.
Наткнулся на вот эту тему , но не переварил.

Интересует и серверное и переключение на клиенте.

Спасибо.
 
A

alexas

<div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">CSJS plus SSJS</div></div><div class="sp-body"><div class="sp-content">
Код:
<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core"
xmlns:xc="http://www.ibm.com/xsp/custom" dojoTheme="true"
dojoParseOnLoad="true">

<script type="text/javascript">
dojo.require("dijit.layout.ContentPane");
dojo.require("dijit.layout.TabContainer");
</script>

<xp:this.afterPageLoad>
<![CDATA[#{java script:sessionScope.put("SelectTab","");}]]>
</xp:this.afterPageLoad>

<h1>Tab Container
</h1>
<div id="mainTabContainer" dojoType="dijit.layout.TabContainer"
style="width:100%;height:50%" tabPosition="left">
<div id="tab1" dojoType="dijit.layout.ContentPane" title="First Tab" >
First Tab
</div>
<div id="tab2" dojoType="dijit.layout.ContentPane"	title="Second Tab" selected="#{sessionScope.SelectTab}" >
Second Tab by SSJS     

</div>
<div id="tab3" dojoType="dijit.layout.ContentPane" title="Third Tab" partialRefresh="true">
Third Tab by CSJS

<xp:br></xp:br>В xp.tabbedPanel только первая вкладка отображается при загрузке страницы, другие вкладки отображаются, когда пользователь щелкает их. Таким образом, полное или частичное обновление происходит, когда пользователь нажимает на вкладку, которая вызывает поля валидаторов.
Таким образом, в конце концов, пользователь не может открыть другую вкладку, пока все валидаторы на текущей вкладке не fullfilled.
В настоящее время не существует обходной путь или решение с использованием XP: tabbedPanel тега. Но есть хорошая альтернатива: djTabContainer.
Просто добавить контейнер Dojo Tab Control, и внутри контейнера добавить Tab области управления.
</div>
</div>





<xp:button value="Third Tab CSJS" id="button1">
<xp:eventHandler event="onclick" submit="false">
<xp:this.script><![CDATA[ var TabContainer = dijit.byId("mainTabContainer");

var subTab = dijit.byId("tab3");
TabContainer.selectChild(subTab);]]></xp:this.script>
</xp:eventHandler></xp:button>
<xp:br></xp:br>
<xp:br></xp:br><xp:button value="Second Tab SSJS" id="button2">
<xp:eventHandler event="onclick" submit="true"
refreshMode="complete">
<xp:this.action><![CDATA[#{java script:sessionScope.put("SelectTab","true")}]]></xp:this.action>
</xp:eventHandler></xp:button><xp:eventHandler event="onClientLoad" submit="true" refreshMode="norefresh">
</xp:eventHandler></xp:view>
Для SSJS можно определить для нужной вкладки - selected="${VariableValue}"
VariableValue by defoult можно не определять, тогда by OnLoad будет первый Tab
Где-то в коде:
1 присвоить VariableValue = "true"
2 отрефрешить весь TabContainer или конкретный Tab

P.S. Не проверял, но по логике - должно работать.
P.P.S. Работает. В код добавил кнопку SSJS :)
 
Мы в соцсетях:

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