0

这是 ASP.Net UpdatePanel 的 UpdateProgress 的典型行为吗?我在页面上的用户控件窗口内有一个带有 UpdateProgress 控件的更新面板。

如果我然后让页面在后台进行一些加载并单击用户控制更新面板中的按钮,则 UpdateProgress 根本不会显示。这就像 UpdatePanels 刷新请求甚至在实际页面完成后才注册。值得注意的是,如果后台没有任何事情发生,它会显示出来。

我想要的功能是你所期望的。如果在单击按钮后必须等待任何事情来完成刷新,我想加载程序显示出来。

我知道如果我只是将 jquery ajax 与静态 web 方法一起使用,我可以获得这个功能,但是你不能在用户控件中使用静态 web 方法。我可以将它放在页面中,但它确实不属于那里。在这种情况下,一个成熟的 wcf 也不值得。我试图与 UpdatePanel 妥协,但这些事情似乎总是给我带来一些麻烦。

也许这就是它的工作方式?

编辑:所以我会澄清一下我在做什么。

发生的事情是我有一个页面,上面只有一些工具和一张大地图。当页面最初加载时,加载地图需要一些时间。现在,如果在加载时我打开包含有问题的更新面板的工具(用户控件),然后单击此用户控件上的按钮,该按钮应该用新数据刷新更新面板并显示加载标志(在 updateprogress ) 然后 UpdateProgress 加载图像不显示。但是,通过按钮单击运行的代码确实会在页面加载完成后运行(如预期的那样),如果包含用户控件的页面上没有任何内容正在加载,则 UpdateProgress 将显示。

我只想在页面加载时显示加载器。

我认为我的问题是地图加载可能在更新面板中,而我的 UpdateProgress 仅与用户控件更新面板的更新面板相关联。因此,在加载地图时我不会看到加载图标。但事实并非如此。

4

2 回答 2

1

我并没有完全按照您在此处所做的操作,但我假设您已经掌握了用户控件中的内容并验证了如果直接放置在页面中它可以正常工作?

作为旁注,我个人删除了 UpdatePanels 并替换为 jQuery 替代品,因为它可以显着节省性能,而且弄清楚 jQuery 等人的时间效率更高。怪癖而不是 ASP.NET AJAX 怪癖。老实说,我希望我能收回投资于 UpdatePanels/ASP.NET AJAX 的时间。

于 2009-02-12T00:26:57.010 回答
1

相信在多次阅读您的 OP 后我理解了您的问题。我自己也遇到过这种情况,很难让 UpdateProgress 在 Page_Load 上工作。解决方案?最初不要在 Page_Load 上触发服务器端事件。在 UpdatePanel 中添加一个 AJAX 计时器,如下所示:

<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
  <ContentTemplate>
     <asp:Timer ID="ajxTmr1" runat="server" Interval="1000" OnTick="ajxTmr1_Tick" />
  </ContentTemplate>
</asp:UpdatePanel>

在计时器滴答事件上,根据需要执行您的服务器代码。如果您将更新进度连接到上面的更新面板,那么一切都应该正常工作。

<asp:UpdateProgress ID="UpdateProgress1"  runat="server" DisplayAfter="0"  AssociatedUpdatePanelID="UpdatePanel1" Visible="false">
    <%--Panel or whatever goes here--%>
</asp:UpdateProgress>
于 2012-03-28T21:11:54.290 回答