单击“添加选项卡”按钮时,服务器端代码(tabs.ActiveTabIndex+=1
)会更改选项卡,但选项卡显示为空。如果我来回点击,我可以看到用户控件渲染。我错过了什么吗?
<ajaxToolkit:TabContainer ID="TabContainer1" runat="server" Height="90%" Width="100%"
ActiveTabIndex="0" OnDemand="true" AutoPostBack="false" TabStripPlacement="Top"
CssClass="ajax__tab_xp" ScrollBars="None" UseVerticalStripPlacement="false" VerticalStripWidth="120px">
<ajaxToolkit:TabPanel ID="tab1" runat="server" HeaderText="1">
<ContentTemplate>
<uc:UCCommSubmit ID="ucCommInfo" runat="server" />
</ContentTemplate>
</ajaxToolkit:TabPanel>
<ajaxToolkit:TabPanel ID="TabPanel1" runat="server" HeaderText="" Visible="false">
<ContentTemplate>
<uc:UCCommSubmit ID="UCCommSubmit1" runat="server" />
</ContentTemplate>
</ajaxToolkit:TabPanel>
<ajaxToolkit:TabPanel ID="TabPanel2" runat="server" HeaderText="" Visible="false">
<ContentTemplate>
<uc:UCCommSubmit ID="UCCommSubmit2" runat="server" />
</ContentTemplate>
</ajaxToolkit:TabPanel>
</ajaxToolkit:TabContainer>
<div style="padding-right: 20px; float: right">
<asp:Button ID="btnNext" runat="server" Text="Add Tab"
onclick="btnNext_Click" />
</div>
protected void btnNext_Click(object sender, EventArgs e)
{
if (TabContainer1.Tabs.Count > TabContainer1.ActiveTabIndex + 1)
{
TabContainer1.Tabs[TabContainer1.ActiveTabIndex + 1].HeaderText = (TabContainer1.ActiveTabIndex + 1).ToString();
TabContainer1.Tabs[TabContainer1.ActiveTabIndex+1].Visible = true;
TabContainer1.ActiveTabIndex += 1;
}
}
答案 0 :(得分:0)
我不确定这是否相关,但几个月前我遇到了类似的问题。以下是关于SO的答案links to forums.asp.net包含详细信息:https://stackoverflow.com/a/6307930/284240
也可能是因为更改ActiveTabIndex
代码隐藏而未触发ActiveTabChanged
的{{1}}事件。
尝试使用按钮的这个javascript函数TabContainer
,这会导致TabContainer触发此事件:
onclick
然后,您可以处理事件并更改UserControls的可见性(并在必要时更新UpdatePanel)。
我刚注意到我回答another similar question here on SO:
您是否尝试过设置ActiveTab-Property(来自codebehind)或来自codebehind或aspx的ActiveTabIndex?
如果您明确将显示设置为可见,您还可以检查它是否有效:
function changeActiveTab(tabContainerID,tabIndex){
var ctrl = $find(tabContainerID);
ctrl.set_activeTab(ctrl.get_tabs()[tabIndex]);
}
您确定正确加载了Ajax库吗?你在TabContainer中有其他Ajax控件吗?检查该页面中的所有html是否有效。
您使用的是最新的AjaxToolkit和ToolkitScriptManager而不是ScriptManger吗?