2010-06-14 46 views

回答

0

不是在頁面上聲明性地添加所有控件,而是以編程方式將它們添加到選項卡更改事件中。請參閱此鏈接:http://msdn.microsoft.com/en-us/library/c0az2h86.aspx

還是這裏的短版..

  1. 更改頁面頂部的註冊聲明,以參考:

    <%@參考控制=「的MyUserControl的.ascx」%>

  2. 在你的標籤更改事件,從文件加載的UC:

    昏暗UC作爲的MyUserControl = CTYPE(LoadControl( 「MyUserControl.ascx」),的MyUserControl)

  3. 控制添加到頁:

    PlaceHolder1.Controls.Add(UC)

+0

請說明標籤更改事件。 它是TabContainerSettings_ActiveTabChanged嗎? 有一個特定選項卡的選項卡更改事件。 – 2010-06-14 11:00:45

+0

是的,假設您正在使用AJAX控件工具包。 – Antony 2010-06-14 14:58:46

+0

謝謝。 但有一個問題。 當我點擊一個標籤的控件顯示並再次消失。 – 2010-06-15 12:27:52

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> 

...和代碼隱藏:

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 
相關問題