1

I have an ASP.NET page that collects some criteria from the user with ASP.NET controls and then based on the values of the controls, uses HttpContext.Current.Response to generate output to a CSV from the web page.

The issue I'm having is that it may take a minute or so for my response to be generated. Thus, I would like to implement a progress bar of some kind from the time my user submits the request until the time the CSV is delivered. Unfortunately, I can't seem to get my hidden div to display and hide on demand with EnablePartialRendering set to false in ScriptManager (this is necessary for populating other controls on the page).

Is there any way to implement a progress bar (either server or client-side) to monitor the status of HttpContext output?

4

3 回答 3

0

UpdateProgress课程不是进度条。其目的是提供正在发生部分回发的反馈,而不是向浏览器传达该部分回发的实际进度

我最喜欢的 JavaScriptish(也支持所有主要插件)库来满足您的要求是Plupload

例子可以在这里看到。

于 2012-04-12T18:13:10.413 回答
0

不,至少不是你想的那样。如果您要将文件发回给用户,那么您不能事先向用户发出任何 HTML。您必须将文件作为独立响应发送。

您可以做的是许多其他网站所做的,即在后台执行该过程,并将用户重定向到具有动画以指示正在发生的事情的页面。您使用 Javascript 使页面每隔几秒钟刷新一次,直到后台进程完成,然后返回文件。

这使过程复杂化,并且需要更多的工作。你要问的问题是,这种进步真的值得吗?

编辑:

没有注意到您正在使用 Ajax,在这种情况下,您可以简单地在页面上放置一个通常隐藏的动画,然后在执行该过程时取消隐藏动画并让它旋转。这不能显示实际进展,但确实表明正在发生某些事情。该过程完成后,您再次隐藏动画,然后发送文件。

如果您要使用 javascript 进行下载,您还有其他一些选择……但这些都与准备下载的进度无关。

于 2012-04-12T18:14:22.520 回答
0

如果您使用的是 ajax,这是最好的方法

$('#loadinganimation')
    .hide()  // hide it initially
    .ajaxStart(function() {
        $(this).show();
    })
    .ajaxStop(function() {
        $(this).hide();
});
于 2012-04-12T18:15:23.917 回答