• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

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 :)
 
Мы в соцсетях:

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