在djTabContainer中选择和关闭djTabPane

时间:2016-09-26 11:28:23

标签: xpages xpages-ssjs xpages-extlib

我想知道,如果有人因我的一个开发问题而对我有所了解(确定你这么做;-))。

我尝试使用带有动态Dojo Tab窗格的“Dojo Tab容器”。

<xp:div id="tabs">
    <xe:djTabContainer id="djTabContainer1" tabPosition="top"
        style="height:250px;width:500px" defaultTabContent="defTab">
        <xp:this.facets>
            <xe:djTabPane xp:key="defTab" id="myTab" partialEvents="true" closable="true">
                <xp:panel>
                    <xp:label value="#{javascript:getComponent('myTab').getTitle()}"></xp:label>
                </xp:panel>
            </xe:djTabPane>
        </xp:this.facets>
    </xe:djTabContainer>
</xp:div>

然后有一个SSJS(按钮)事件来添加标签(实际上动作更复杂,以计算标题等,但这应该解释):

var cont:com.ibm.xsp.extlib.component.dojo.layout.UIDojoTabContainer = getComponent('djTabContainer1');
cont.createTab({id:'tab1', tabUniqueKey:'tab1', tabTitle:'tab1'});
cont.createTab({id:'tab2', tabUniqueKey:'tab2', tabTitle:'tab2'});
cont.createTab({id:'tab3', tabUniqueKey:'tab3', tabTitle:'tab3'});

现在我想以编程方式切换(打开)到另一个选项卡,或关闭选项卡。在这里找到有用的例子非常困难。

我发现,我可以通过 cont.setSelectedTab(' 2 ')以编程方式切换到另一个标签,而不是 cont.setSelectedTab(' tab2 ') - 正如我所料。出于某种原因, tabUniqueKey 参数被完全忽略,而 tabTitle 参数则不被忽略。更糟糕的是:看起来所有createTab() - 参数都被忽略,但tabTitle除外。

是否有一种优雅的方式来获取选项卡窗格组件? getComponent('tab2')不起作用。 “ id:'tab2'”和“ tabUniqueKey:'tab2'”均未考虑在内。我可以使用 getComponent('myTab')获取 标签,但如果所有标签都具有相同的ID,则完全没用。

所以,

也没有
var cont:com.ibm.xsp.extlib.component.dojo.layout.UIDojoTabContainer = getComponent('djTabContainer1'); 
var tabSel:com.ibm.xsp.extlib.component.dojo.layout.UIDojoTabPane = comp.selectTab('tab2');

,也不

var tabSel:com.ibm.xsp.extlib.component.dojo.layout.UIDojoTabPane = comp.setSelectedTab('tab2');

至少我正在寻找的东西类似于:

cont.closeTab('tab3'); // to close tab3

1 个答案:

答案 0 :(得分:1)

createTab()返回一个UIDojoTabPane窗格对象,您可以使用它来选择之后创建的选项卡:

var cont:com.ibm.xsp.extlib.component.dojo.layout.UIDojoTabContainer = getComponent('djTabContainer1');
var paneTab1:com.ibm.xsp.extlib.component.dojo.layout.UIDojoTabPane = cont.createTab({id:'tab1', tabUniqueKey:'tab1', tabTitle:'tab1'});
...
cont.setSelectedTab(paneTab1.getTabUniqueKey());

您也可以使用此窗格对象关闭选项卡:

paneTab1.closeTab()