0

单击按钮后,它将转到下一个选项卡,但是,如果我单击上一个选项卡进行编辑,然后再次单击该按钮,则没有任何反应。知道为什么吗?这是按钮代码:

<xp:button value="Next" id="buttonNext1">
<xp:eventHandler event="onclick"
    submit="true" refreshMode="partial" refreshId="panelMain">
    <xp:this.action><![CDATA[#{javascript:
viewScope.currentTab = "tpCompanyInformation";
}]]></xp:this.action>
</xp:eventHandler>
</xp:button>
4

1 回答 1

5

我看到您将 SelectedTab 甚至 defaultTab 值绑定到您的viewScope.currentTab,并使用 viewScope.currentTab =“id”在每个按钮中设置 viewScope 变量。

我建议通过使用直接在组件中设置选项卡getComponent('tabbedPanel').setSelectedTab('tabid')

作为一个小礼物:也许这段代码可以帮助您创建两个按钮(“后退”和“下一个”),无论您将添加多少选项卡到面板中,这些按钮应该始终用作前进和后退按钮。

按钮返回:

    <xp:button id="button1" value="back">
                        <xp:eventHandler event="onclick" submit="true"
                            refreshMode="partial" refreshId="tabbedPanel1">
                            <xp:this.action><![CDATA[#{javascript:var panel:com.ibm.xsp.component.xp.XspTabbedPanel = getComponent('tabbedPanel1');
                var list:Array = panel.getChildren().toArray();
                var currentTab = panel.getSelectedTab();

                for(var i = 0; i < list.length;i++){
                    if(currentTab.equals(list[i].id)){
                        if(i > 0)
                            panel.setSelectedTab(list[i-1].id);
                        else
                            panel.setSelectedTab(list[list.length - 1].id);
                    }
                }

                    }]]></xp:this.action>
       </xp:eventHandler>
</xp:button>

按钮下一步:

<xp:button value="Next" id="buttonNext1">
        <xp:eventHandler event="onclick" submit="true"
            refreshMode="partial" refreshId="tabbedPanel1">
            <xp:this.action><![CDATA[#{javascript://
var panel:com.ibm.xsp.component.xp.XspTabbedPanel = getComponent('tabbedPanel1');
var i:java.util.Iterator = panel.getChildren().iterator();

var currentTab = panel.getSelectedTab();

while(i.hasNext()){
    if(currentTab.equals(i.next().id)){
        if(i.hasNext())
            panel.setSelectedTab(i.next().id);
        else
            panel.setSelectedTab(panel.getChildren().iterator().next().id);
    }
}
    }]]></xp:this.action>
        </xp:eventHandler>
</xp:button>
于 2013-08-26T06:24:07.840 回答