我的web表单上有一个ajax:TabContainer
,TabContainer
中有两个TabPanel
。当用户单击第二个TabPanel
时,我需要调用服务器端方法。当用户单击第一个TabPanel
时,它将进行注释,当用户单击第二个TabPanel
时,它会激发一些服务器端代码。
为此,我尝试使用ActiveTabChanged和OnClientActiveTabChanged。
服务器端代码
void TabContainer1_ActiveTabChanged(object sender, EventArgs e)
{
//Code goes here
}
JavaScript代码
function fireChangedEvent(sender, e) {
if (sender.get_activeTabIndex() == 1) {
return false;
}
else {
return true;
}
}
但它并不是每次用户点击任何选项卡都能工作,它会触发TabContainer1_ActiveTabChanged
。有人能指导我如何在不需要的时候触发这个事件吗?
如果我得到了正确的答案,您可以通过为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
}
}
TabContainer的工作原理与任何下拉列表、复选框等类似。因为它需要将"autopostback"参数设置为true:
<asp:TabContainer ID="TabContainer1" runat="server" ActiveTabIndex="2" Width="920px"
AutoPostBack="True">
最后我找到了这个问题的解决方案。我们可以使用更新面板和触发器对服务器端方法进行条件调用。Matt Berseth
发布的解决方案
如何:在AjaxControlToolkit的TabContainer Control 中延迟加载TabPanel
现在我的问题解决了。