2010-06-24 6 views
1

누군가가 이것을 도와 줄 수 있는지 궁금합니다. 어떤 탭을 클릭했는지에 따라 세 개의 TabPanels가 있습니다. 서로 다른 내용을 표시하기 위해 다른 C# 함수를 호출하고 싶습니다. 페이지가로드 될 때 모든 기능을 실행할 수 있지만 지저분 해 보인다는 것을 알고 있습니다. 나는 이것을 할 수있는 방법이있을 것이라고 확신하지만 나는별로 보지 않습니다. 이 문제에 대해 완전히 잘못된 각도에서 생각할 수 있으므로 더 나은 방법을 생각해 볼 수 있는지 알려 주시기 바랍니다.asp.net TabPanel 코드 숨김 코드에서 C# 함수를 호출

도움이 될 것입니다.

예 ASP.net 내가 WebUserControls에 둥지 "기능"을하고자 별도상에서 tabpanels에 넣어

<ajaxToolkit:TabContainer ID="tabParameters" AutoPostBack="true" Width="100%" runat="server" ActiveTabIndex="0"> 
<ajaxToolkit:TabPanel ID="tabDetails" OnClientClick="Load_Details()" HeaderText="Details" runat="server"> 

답변

1

. 그들은 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 

관련 문제