Asp.net Ajax Single UpdatePanel + AnimationExtender + HIstory = Нет обновленной анимации - PullRequest
1 голос
/ 06 июля 2011

У меня есть страница, которая загружается между частичными постами назад, и я поместил 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 будет запускаться только в том случае, если произошла частичная пересылка в связи с загрузкой страницы в первый раз.Я предполагаю, что это не фальшивая частичная пересылка при загрузке по истории, поэтому она никогда не исчезает.

Мой вопрос, есть ли чистый способ исправить это, что я только что смог найти, или я застрял с введением некоторыхjavascript для вызова вручную?Как бы ни была проста эта проблема, я не могу найти там никакой помощи.

Спасибо

1 Ответ

1 голос
/ 08 июля 2011

Я наконец понял это.Я добавил условие в сторону 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>
...