2011-07-05 5 views
1

부분 포스트 백간에로드하는 데 시간이 걸리고 updatePanelAnimationExtender를 배치하여 updatePanel을 페이드 인 및 페이드 아웃하는 페이지가 있습니다. 샘플 : 페이지가 처음로드 당신이 얻을 때 버튼을 클릭하면Asp.net Ajax Single UpdatePanel + AnimationExtender + HIstory = OnUpdated 애니메이션 없음

Private Sub testpage_Init(sender As Object, e As System.EventArgs) Handles Me.Init 
    UpdatePanel1.ContentTemplateContainer.Controls.Add(New LiteralControl("1")) 'Show the init ran 
End Sub 

Private Sub btn_Click(sender As Object, e As System.EventArgs) Handles testbtn.Click 
    ScriptManager.GetCurrent(Me.Page).AddHistoryPoint("2", "2", "2") 'Save Event 
    UpdatePanel1.ContentTemplateContainer.Controls.Add(New LiteralControl("2")) 'Display event 
End Sub 

Private Sub sm1_Navigate(sender As Object, e As System.Web.UI.HistoryEventArgs) Handles sm1.Navigate 
    Dim State As String = "" 
    If e.State.HasKeys Then 
     State = e.State.Item(0) 
    End If 
    UpdatePanel1.ContentTemplateContainer.Controls.Add(New LiteralControl(State)) '"Reload" event 
End Sub 

이 는 버튼 1

이는 상태 표시 을 절약 뒤에

영문

 <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Always" > 
     <ContentTemplate> 
      <asp:Button ID="testbtn" runat="server" Text="test" /> 
     </ContentTemplate> 
    </asp:UpdatePanel> 

    <ajaxToolkit:UpdatePanelAnimationExtender ID="UpdatePanelAnimations" runat="server" TargetControlID="UpdatePanel1"> 
     <Animations> 
     <OnUpdating> 
      <FadeOut Duration="0.2" Fps="20" minimumOpacity=".3" /> 
     </OnUpdating> 
     <OnUpdated> 
      <FadeIn Duration="0.2" Fps="20" minimumOpacity=".3"/> 
     </OnUpdated> 
    </Animations> 
</ajaxToolkit:UpdatePanelAnimationExtender> 

코드 버튼 12

그리고 페이드 인/아웃이 바르게 수행됩니다. 이력 정보가있는 URL을 가져 와서 새 탭에로드하려고하면 Button 12가 올바르게 표시되지만 페이드 아웃 상태가됩니다. 처음으로 페이지를로드하는 것과 관련하여 부분 포스트 백이 발생한 경우에만 OnUpdated가 실행될 것이라고 사람들이 들었습니다. 나는 그것이 결코 사라져 버리지 않기 때문에 역사에 의해 로딩 할 때 partialpostback을 가짜로 만들지는 않을 것이라고 짐작하고있다.

내 질문에 내가 방금 찾거나 찾지 못했던 문제를 해결할 수있는 깨끗한 방법이있다. 수동으로 페이드 인을 호출합니까? 이 문제가 단순한 것만 큼 나는 도움이 거의 없다는 것을 알 수 있습니다.

감사합니다.

+0

글쎄, 나는 또한 자바 스크립트를 통해 그것을하는 방법에 대한 정보를 얻을 것이다. $ (document) .ready 및 Sys.WebForms.PageRequestManager.getInstance()에서 수정하려고했습니다. add_endRequest (EndRequestHandler); 애니메이션이 실행되기 전에 모두 실행됩니다. – jheizer

답변

1

나는 마침내 그것을 알아 냈습니다. OnUpdating 측에 조건을 추가하여 부분 포스트 백을 초기화 한 컨트롤이 스크립트 관리자인지 확인합니다. 그렇다면 페이드 아웃하지 마십시오.

<ajaxToolkit:UpdatePanelAnimationExtender ID="UpdatePanelAnimations" BehaviorID="animationpanel" runat="server" TargetControlID="UpdatePanel1"> 
    <Animations> 
     <OnUpdating> 
      <Condition ConditionScript="(theForm.__EVENTTARGET.value != 'ctl00$sm1');"> 
       <FadeOut Duration="0.15" Fps="20" minimumOpacity=".3" /> 
      </Condition> 
     </OnUpdating> 
     <OnUpdated> 
      <FadeIn Duration="0.15" Fps="20" minimumOpacity=".3" /> 
     </OnUpdated> 
    </Animations> 
</ajaxToolkit:UpdatePanelAnimationExtender> 
+0

좋은 해결책이지만, 어쩌면 당신은 내 UpdatePanel (내 페이지에 여러 개의 UpdatePanel이 있음)을 업데이트하는 방법을 알 수 있습니까? – BigMan

관련 문제