. 그들은 Page.Load에서 아무것도하지 않고 보이지 않습니다. 모든 DataBinding/Time consuming 작업을 수행하는 "BindData"함수를 정의하십시오. 사용자가 ActiveTab (또는 기본 활성 탭)을 변경하면 해당 UserControl이 표시되고 해당 BindData 함수가 호출됩니다.
이 Panel 만 다시로드되도록 UserControl 및 Eventname = ActiveTabChanged 인 Async-Postback-Trigger에 대해 UpdatePanels (Updatemode = 조건부)이 필요합니다. ASPX에 예를 들어
이 (MD_Location은 UserControl을, 공간의 부족으로 내가 하나를 게시하지만 그들 중 많은 상상한다) :
<act:TabContainer ID="TabContainer1" runat="server" AutoPostBack="true" >
<act:TabPanel ID="TabLocation" runat="server" HeaderText="Locations">
<ContentTemplate>
<asp:UpdatePanel ID="UpdLocation" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<MD:MD_Location id="MD_Location" runat="server" Visible="false" />
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="TabContainer1" EventName="ActiveTabChanged" />
</Triggers>
</asp:UpdatePanel>
</ContentTemplate>
</act:TabPanel>
및 코드 숨김에서
(죄송합니다, 단지 VB.Net 사용할 수, 난 당신이) 아이디어를 얻을 희망 :
Private Sub TabContainer1_ActiveTabChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles TabContainer1.ActiveTabChanged
If Me.TabContainer1.ActiveTab Is Me.TabLocation Then
Me.MasterDataType = "Locations"
End If
switchControlVisibility()
End Sub
Private Sub switchControlVisibility()
Select Case Me.MasterDataType.ToLower
Case "locations"
Me.MD_Location.Visible = True
Me.Lblheader2.Text = "Locations"
UpdHeader.Update()
Me.MD_Location.BindData() '<---- do time-consuming stuff
Me.UpdLocation.Update()
End Sub
예