我有一个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。我知道生成这样的报告并不理想,但这是一个不同的故事......
答案 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>