如何有效地触发ajax的ActiveTabChanged事件:Tabcontainer

时间:2013-07-31 08:25:59

标签: asp.net event-handling ajaxcontroltoolkit

我的网络表单上有一个ajax:TabContainerTabPanel中有TabContainerTabPanel。 当用户点击第二个TabPanel时,我需要调用服务器端方法。当用户点击第一个TabPanel时,它会注意到,当用户点击第二个void TabContainer1_ActiveTabChanged(object sender, EventArgs e) { //Code goes here } 时,它会触发一些服务器端代码。

为此,我尝试使用ActiveTabChanged和OnClientActiveTabChanged。

服务器端代码

function fireChangedEvent(sender, e) {
    if (sender.get_activeTabIndex() == 1) {
        return false;
    }
    else {
        return true;
    }
}

JavaScript代码

TabContainer1_ActiveTabChanged

但是,每当用户点击任何标签时,它都无法启动{{1}}。 当我不需要每次用户点击任何标签时,任何人都可以指导我如何触发此事件吗?

3 个答案:

答案 0 :(得分:1)

如果我说得对,你可以通过为你的asp:TabPanel指定TabIndex来做到这一点。

<asp:TabPanel id="tab1" TabIndex=1>
<asp:TabPanel id="tab2" TabIndex=2>

然后

void TabContainer1_ActiveTabChanged(object sender, EventArgs e)
{
    if(TabContainer.ActiveTabIndex == 2){
    //Code hereTabContainer
}
}

答案 1 :(得分:1)

最后我找到了这个问题的解决方案。我们可以使用更新面板和触发器来进行服务器端方法的条件调用。 由Matt Berseth

发布的解决方案

How To: Lazy-load TabPanel's within the AjaxControlToolkit's TabContainer Control

现在我的问题已经解决了。

答案 2 :(得分:1)

TabContainer的工作方式与任何下拉列表,复选框等一样..因为它需要将“autopostback”参数设置为true:

<asp:TabContainer ID="TabContainer1" runat="server" ActiveTabIndex="2" Width="920px"
                                    AutoPostBack="True">