我有一个Reports.aspx ASP.NET页面,允许用户通过单击几个超链接来下载Excel报告文件。当单击报告超链接时,我使用javascript window.open方法打开一个新窗口并导航到download.aspx页面。下载页面的代码隐藏使用openxml(在内存中)即时创建一个excel文件并将其发送回浏览器。下面是一些来自download.aspx页面的代码:ASP.net下载页面
byte[] outputFileBytes = CreateExcelReport().ToArray();
Response.Clear();
Response.BufferOutput = true;
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
Response.AddHeader("Content-Disposition", string.Format("attachment; filename={0}", "tempReport.xlsx"));
Response.BinaryWrite(outputFileBytes);
Response.Flush();
Response.Close();
Response.End();
我的问题:其中一些报告需要一些时间才能生成。我想在我的Reports.aspx页面上显示一个loading.gif文件,同时请求download.aspx页面。一旦页面请求完成,应该使loading.gif文件不可见。
有没有办法做到这一点。也许是某种事件。我有我的处置机器人。
谢谢
PS。我知道生成像这样的报告并不理想,但这是一个不同的故事......
设置你的框架SRC您HTTP处理程序或网页。设置是高度和宽度为0.而不是警报你好,编写代码来隐藏你的“加载”元素 – Midhat 2010-04-10 10:25:41
我对asp.net来说很新,你是什么意思的处理程序?此外,iframe onload在下载时不会触发。它只会在您的示例中请求诸如google之类的网站时触发。 – MegaByte 2010-04-10 10:30:54
处理程序只是一个代码文件(带.ashx扩展名),用于处理请求而不显式地具有UI(是的,您可以在响应中输出html标签,但那不是写入处理程序的要点)。如果您熟悉J2EE,请将它看作是一个servlet。 如果您使用处理程序,则可以跳过整个新窗口全部收集,并让用户的浏览器接管进度演示文稿 – Midhat 2010-04-10 10:58:43