每当我的更新面板做到这是Ajax的事情时,我都试图显示更新进度加载图像。我环顾了教程,这似乎真的很简单,但是我没有运气。这几乎是我所拥有的...

<div id="panelWrapper">
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
    <ContentTemplate>
        <asp:UpdateProgress ID="TaskUpdateProgress" runat="server" DynamicLayout="False" AssociatedUpdatePanelID="UpdatePanel1" DisplayAfter="0">
            <ProgressTemplate>
                <asp:Image ImageUrl="~/Images/ajax-loader.gif" Width="16px" Height="16px" runat="server" ID="TaskLoadingImage"/>
            </ProgressTemplate>
        </asp:UpdateProgress>

        <div id="UrlDiv" class="URLNotification">
            <asp:Label ID="UrlLabel" runat="server" Text="URL:" AssociatedControlID="Url" />
            <asp:HyperLink ID="Url" runat="server" Text="Click &quotGenerate" to create the URL." />
        </div>

        <br />

        <asp:CheckBoxList runat="server" ID="IncludeItems" TextAlign="Right">
            <asp:ListItem Selected="True">Include 1</asp:ListItem>
            <asp:ListItem Selected="True">Include 2</asp:ListItem>
        </asp:CheckBoxList>

        <br />

        <div id="buttons" style="display:inline;">
            <asp:Button ID="Generate" runat="server" OnClicked="Generate_Clicked" Text="Generate" />
            <asp:Button ID="Add" runat="server" OnClientClick="add();" Text="Add"/>  
        </div>
    </ContentTemplate>
</asp:UpdatePanel>

我在样式表中也有一些绝对的定位样式。我尝试了您在这里看到的内容的一系列变体,但没有找到有关问题的好信息。有任何想法吗?如果您需要其他任何需要,请告诉我。

编辑: 我发现的唯一新信息是...

“在以下情况下,UpdateProgress控件不会自动显示:

UpdateProgress控件与特定的更新面板相关联,但是异步发回的结果是由不在该更新面板内部的控件。

UpdateProgress控件与任何UpdatePanel控件都不关联,并且异步发回的不是由不在更新程序内部且不触发的控件引起的。例如,更新以代码执行。”

我很有信心这些都不适合我的案子。所发生的只是单击“更新面板”的按钮(在更新面板内部),呼叫一些代码,该代码是SET的URL文本要重新加载的更新面板。

有帮助吗?

解决方案 4

我想我弄清楚了发生了什么。这个问题没有我在更新或面板上做错任何事情的问题。正是我在背景中还有其他装载,显然是持续了更新的ajaxyness。

因此,基本上发生的事情是,加载图标不会在初始页面加载上显示。我意识到这一点,因为我实际上等到页面上的所有内容都完全加载以启动按钮。果然,装载机出现了。

我以为至少需要要求更新面板刷新刷新,即单击事件听到了单击事件,以便在其他内容加载的时间内将加载程序图标立即显示。尽管情况似乎并非如此...

其他提示

我对UpdateProgresspanel也有同样的问题。我发现,当您将UpdateProgresspanel放置并将其关联到UpdatePanel时,该updatePanel的任何寄发返回都会导致更新Progresspanel显示。

另一个技巧是删除相关的updatepanel参数,如果您在页面上有一个UpdatePanel,这将导致UpdateProgressPanel显示发生的所有异步发回发行。

可以将UpdateProgressPanel放置在代码中的任何位置,除了那些在其上具有预定义标签的区域。它可以放置在UpdatePanel的内部或外部,它将显示您是否正确放置了其CSS,将其与UpdatePanel相关联或将其放置在此处,如果发生异步的回发结果,它将显示。

不要将更新进度控制放入更新面板控件中

确保已设置更新的“显示后”(1秒)

在将项目从VS2008转换为VS2010之后,我真的很难。 Update Progress突然停止工作,这在VS2008中很好。花一个整个下午搜索答案并进行实验,最后我发现了出了什么问题 斯科特·古(Scott Gu)的帖子.

这是一个自动生成的web.config条目 'xhtmlConformance模式=“旧版”'.

禁用此功能后,它再次开始工作。可能不是您的情况,而只是对于那些遇到同样问题的人来说。

愉快的编码

我也没有显示不显示的更新过程。事实证明,到服务器的寄回实际上是如此之快,以至于没有时间显示。添加螺纹。Sleep(10000)帮助显示了问题。

Create a new ASP.NET Ajax-Enabled Web Site and then paste these code in ascs and aspx file. Run it and you can see the update progress. You can use animated gif files too to show the progress...

ascx Page
======================================================
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title>UpdateProgress control</title>
</head>
<body>
    <form id="form1" runat="server">
        <asp:ScriptManager ID="ScriptManager1" runat="server" />
        <asp:UpdateProgress runat="server" id="PageUpdateProgress" AssociatedUpdatePanelID="Panel">
            <ProgressTemplate>
                Loading...
            </ProgressTemplate>
        </asp:UpdateProgress>
        <asp:UpdatePanel runat="server" id="Panel">
            <ContentTemplate>
                <asp:Button runat="server" ID="UpdateButton" OnClick="UpdateButton_Click" Text="Update" />
            </ContentTemplate>
                <Triggers>
                    <asp:AsyncPostBackTrigger ControlID="UpdateButton" EventName="Click"  />
                </Triggers>            
        </asp:UpdatePanel>
    </form>
</body>
</html>

aspx Page
======================================================
protected void UpdateButton_Click(object sender, EventArgs e)
{
    System.Threading.Thread.Sleep(5000);
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top