如何在asp.net中选择选项卡时加载单个用户控件

时间:2010-06-14 06:40:32

标签: asp.net user-controls

我为每个标签分配了15个标签和15个用户控件。 所有都在加载,这延迟了进程。 我想在选项卡容器中选择一个选项卡时加载一个用户控件。

2 个答案:

答案 0 :(得分:0)

不是在页面上以声明方式添加所有控件,而是在选项卡更改事件上以编程方式添加它们。请看这个链接:http://msdn.microsoft.com/en-us/library/c0az2h86.aspx

或者这是短版..

  1. 将页面顶部的注册声明更改为参考:

    <%@ Reference Control =“MyUserControl.ascx”%>

  2. 在标签更改事件中,从文件中加载uc:

    Dim uc As MyUserControl = CType(LoadControl(“MyUserControl.ascx”),MyUserControl)

  3. 将控件添加到页面:

    PlaceHolder1.Controls.Add(UC)

答案 1 :(得分:0)

这是完整的解决方案。标记...

<%@ Reference Control="~/MyUserControl.ascx" %>
<%@ Register assembly="AjaxControlToolkit" namespace="AjaxControlToolkit" tagprefix="asp" %>

<asp:TabContainer ID="TabContainer1" runat="server" AutoPostBack="true">
    <asp:TabPanel id="Tab1" runat="server">
        <HeaderTemplate>
            Tab1
        </HeaderTemplate>
        <ContentTemplate>
            Tab 1 static content
        </ContentTemplate>                
    </asp:TabPanel>
    <asp:TabPanel id="Tab2" runat="server">
        <HeaderTemplate>
            Tab2
        </HeaderTemplate>
        <ContentTemplate>
            <!-- user control will be loaded here -->
        </ContentTemplate>
    </asp:TabPanel>
</asp:TabContainer>

...和codebehind:

Protected Sub TabContainer1_ActiveTabChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles TabContainer1.ActiveTabChanged
    If TabContainer1.ActiveTabIndex = 1 Then
        Dim uc As MyUserControl = CType(LoadControl("MyUserControl.ascx"), MyUserControl)
        Tab2.Controls.Add(uc)
    End If
End Sub