用户控件未在 AJAX 控件工具包 TabContainer 控件中呈现
当我单击“添加选项卡”按钮时,服务器端代码 (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;
}
}
When I click the "add tab" button, server side code (tabs.ActiveTabIndex+=1
) changes tabs, but the tab looks empty. If I click back and forth, I could see the user control renders. Am I missing something?
<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;
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我不确定这是否相关,但几个月前我也遇到过类似的问题。这是链接到forums.asp.net的答案包含详细信息:https://stackoverflow.com/a/6307930/284240
也可能是由于更改
ActiveTabIndex
来自代码隐藏,而不触发TabContainer
的ActiveTabChanged
事件。尝试使用按钮的 JavaScript 函数
onclick
,这会导致 TabContainer 触发此事件:然后您可以处理该事件并更改 UserControls 的可见性(并在必要时更新 UpdatePanels)。
我刚刚注意到我回答了另一个类似的问题:
您是否尝试过设置 ActiveTab-Property(来自代码隐藏)或来自代码隐藏或 aspx 的 ActiveTabIndex?如果您显式地将显示设置为可见,您还可以检查它是否有效:
您确定已加载 Ajax 库吗正确吗?您的 TabContainer 内还有其他 Ajax 控件吗?检查该页面中的所有 html 是否有效。
您是否使用最新的 AjaxToolkit 和 ToolkitScriptManager 而不是 ScriptManger?
I'm not sure if this is related but i had similar problems a few months ago. Here is the answer on SO which links to forums.asp.net that contains detailed informations: https://stackoverflow.com/a/6307930/284240
It could also be caused by changing the
ActiveTabIndex
from codebehind without triggering theActiveTabChanged
event of theTabContainer
.Try to use this javascript function
onclick
of your button, that causes the TabContainer to trigger this event:Then you can handle the event and change the visibility of your UserControls (and update UpdatePanels if necessary).
I just noticed that i answered another similar question here on SO:
Have you tried to set the ActiveTab-Property(from codebehind) or the ActiveTabIndex from codebehind or aspx?You could also check if it works if you explicitly set the display to visible:
Are you sure that the Ajax libraries are loaded correctly? Do you have other Ajax-Controls inside of your TabContainer? Check if all of your html in that page is valid.
Are you using the latest AjaxToolkit and the ToolkitScriptManager instead of the ScriptManger?