Asp.net Ajax Single UpdatePanel + AnimationExtender + HIstory =没有OnUpdated动画

时间:2011-07-05 22:43:01

标签: asp.net ajax vb.net animationextender

我有一个页面需要一段时间来加载部分回发之间,并放置了一个UpdatePanelAnimationExtender来淡入更新面板。样品:

.aspx的       

       <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>

背后的代码

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

单击按钮时,将保存状态并显示 按钮12

它可以正确淡入淡出。如果您使用包含历史记录信息的URL并尝试在新选项卡中加载它,则按钮12会正确显示,但它仍然会淡出。我曾听过有人说OnUpdated只会在第一次加载页面时发生部分后退。我猜它在按历史记录加载时不会伪装partialpostback,因此它永远不会消失。

我的问题是有一个干净的方法来解决这个问题,我刚刚能够找到,或者我是否因为注入一些javascript来手动调用thr淡入淡出?就像这个问题一样简单似乎是我在那里找不到任何帮助。

由于

1 个答案:

答案 0 :(得分: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>