【问题标题】:UpdatePanel Animation only running after TimeoutUpdatePanel 动画仅在超时后运行
【发布时间】:2012-08-22 08:24:00
【问题描述】:

考虑以下场景:

母版页文件1:

<%@ Master Language="VB" AutoEventWireup="false" CodeBehind="Frame.master.vb" Inherits="Project.Frame" ClientIDMode="Static" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server" name="form1">
        <asp:ContentPlaceHolder ID="BodyPlaceHolder" runat="server">
        </asp:ContentPlaceHolder>
    </form>
</body>
</html>

嵌套母版文件:

<%@ Master Language="VB" MasterPageFile="/Project/Code/MasterPages/Frame.Master" CodeBehind="Master2.master.vb" Inherits="Project.Master2" %>
<asp:Content ID="Content2" ContentPlaceHolderID="BodyPlaceHolder" runat="server">
    <input type="submit" id="btSubmit" runat="server" value="start" class="input" />
    <asp:UpdatePanel ID="up" runat="server" UpdateMode="Always">
        <ContentTemplate>
            <div>CALCULATION RESULT GETS DISPLAYED HERE</div>
        </ContentTemplate>
        <Triggers>
            <asp:AsyncPostBackTrigger ControlID="btSubmit" />
        </Triggers>
    </asp:UpdatePanel>
    <ajaxToolkit:UpdatePanelAnimationExtender ID="upae" runat="server" TargetControlID="up">
        <Animations>
            <OnUpdating>
                <Sequence>
                    <ScriptAction FPS="20" Duration="0.5" script="DoSomething();" />
                </Sequence>
            </OnUpdating>
            <OnUpdated>
                <Parallel>
                    <ScriptAction FPS="20" Duration="0" script="DoSomethingElse();" />
                </Parallel>
            </OnUpdated>
        </Animations>
    </ajaxToolkit:UpdatePanelAnimationExtender>
</asp:Content>

加载一些样式的 ASPX 页面。

以及下面的 jQuery 代码:

$(document).ready(function () {
    $("#btSubmit").click();
});

此代码触发 UpdatePanel 刷新。 OnUpdating 动画正在播放,服务器进行一些计算并将结果发送给客户端。客户端在结果中构建,但 OnUpdatedAnimation 从不播放。

如果我将 jQuery 代码更改为以下代码,它可以正常工作。

$(document).ready(function () {
    setTimeout(function () {
        $("#btSubmit").click();
    }, 1500);
});

有人可以告诉我,为什么会发生这种情况以及如何实现,当 DOM 准备好而不是 1.5 秒后开始计算?

亲切的问候, 索伦

【问题讨论】:

    标签: jquery asp.net updatepanel updatepanelanimationexte


    【解决方案1】:

    我相信这种行为的原因是当btSubmit点击发生部分回发时,并非所有客户端对象都被初始化。

    尝试使用这个脚本(放在ScriptManager控制之后):

    Sys.Application.add_load(applicationLoadHandler);
    
    function applicationLoadHandler(sender, args) {
         if (args.get_isPartialLoad() !== true) {
              $("#btSubmit").click();
         }
    }
    

    【讨论】:

    • 在这里遇到了同样的问题。 OnUpdate 运行。结果被插入,但 OnUpdated 动画没有运行。控制台不记录任何错误或警告。 SetTimout 也解决了这个问题,但这是我想要避免的。
    猜你喜欢
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-02
    • 2016-12-14
    • 2017-06-04
    • 2015-07-18
    • 1970-01-01
    相关资源
    最近更新 更多