ASP.net下载页面

时间:2010-04-10 10:08:05

标签: asp.net javascript

我有一个Reports.aspx ASP.NET页面,允许用户通过单击多个超链接下载excel报告文件。单击报告超链接时,我使用javascript window.open方法打开一个新窗口,然后导航到download.aspx页面。下载页面的代码隐藏使用openxml(在内存中)动态创建一个excel文件,并将其发送回浏览器。以下是download.aspx页面中的一些代码:

    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文件不可见。

有没有办法实现这一目标。也许某种事件。我有mootools供我使用。

由于

PS。我知道生成这样的报告并不理想,但这是一个不同的故事......

1 个答案:

答案 0 :(得分:0)

最好将您的报告生成逻辑移动到ASP处理程序,因为此处不涉及UI。

在download.aspx页面上,在不可见的iframe中打开处理程序,并在download.aspx页面上显示加载动画

在download.aspx中向你的帧添加一个onload事件,以删除加载动画。

像这样的东西

<html>
<body>
<iframe id='myframe' src='http://www.google.com'></iframe>
<script language='javascript'>
var ifr=document.getElementById('myframe');
ifr.onload=function(){alert('hello');}
</script>
</body>
</html>