showModalDialog 下载文件问题 (如导出excel)
来源:互联网 发布:免费超市积分软件 编辑:程序博客网 时间:2024/05/18 02:57
showDialog里好像不能用href,只能用onclick
最近在项目中经常用到模态窗口(showModalDialog),客户需要在一个模态窗口中有"生成Excel报表"并"导出"的功能。接到任务后,直接就开始按常规操作实现。
在按钮的Click事件中,根据模板生成Excel报表,填充数据,保存到临时文件夹,然后用Response.WriteFile函数输出文件,一切看上去都很顺利。代码如下:
//根据数据集创建Excel报表并返回Excel报表路径
string fileName = CreateExcel(ds);
Response.Clear();
Response.Charset = "utf-8";
Response.Buffer = true;
this.EnableViewState = false;
Response.ContentEncoding = System.Text.Encoding.UTF8;
Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8));
//设置输出文件类型为excel文件。
Response.ContentType = "application/ms-excel";
Response.WriteFile(fileName);
Response.Flush();
Response.Close();
Response.End();
但是当完成了代码,开始测试的时候,却发现点击"导出"按钮没有反应。开始的时候以为是创建Excel报表的代码有问题,但经过调试后,证实创建Excel代码没有问题,也成功的在临时文件夹下生成了Excel报表,但是却没有"导出"报表(没弹出下载文件对话框)。再看输出文件的代码,应该也没有问题,之前一直这样输出都没有问题的。
在百思不得其解的时候,发现了一个关键点。就是之前输出文件成功的面页都是一般的网页窗口,而这次的操作却是在模态窗口中。问题会不会出在这里呢?赶紧试验了一下。把模态窗口改成了一般的网页窗口,果然可以输出文件没问题,也成功下载了报表。
虽然问题有点怪异,但找到了切入点和问题的关键所在,解决应该就不难了。google一下,发现模态窗口定义了<base target="_self">,这应该是问题所在。然后在页面中重新定义了这个标签,改成了<base target="_blank">,问题成功解决,文件可以正常下载了。但这时候又来了新的问题,下载是可以了,但是却会弹出一个新页面,在模态窗口中下载再弹出页面肯定影响了用户体验。有没有方法在模态窗口中直接下载而不弹出新的页面呢?既然target=_self的时候有问题,target=_blank的时候又会弹出新的页面,这让我想到了在框架中打开新窗口的做法。在页面中加一个看不到的框架,然后把target设为框架名应该可以解决。随后在页面中再加了一个大小为0的iframe
<iframe id="download" name="download" height="0px" width="0px"></iframe><!--用iframe模拟文件下载-->
然后重新修改<base>标签target为框架名:
<base target="download">
重新生成,浏览,测试。问题成功解决。
- showModalDialog 下载文件问题 (如导出excel)
- 下载(导出)文件,如视频、Excel、word文件等
- showModalDialog 下载文件问题
- showModalDialog 下载文件问题
- showModalDialog 下载文件问题 (转)
- java导出excel 下载文件
- 弹出页面(window.showModalDialog(...)/iframe)中的导出Excel事件 点击没反应的问题
- 如何用java导出Excel文件
- showModalDialog下载文件
- 【转】showModalDialog下载文件
- Strurts2下导出Excel文件(含下载弹出框)
- 前端json转换成Excel文件导出(下载)
- .net导出excel 向客户端推送文件 下载文件 ClosedXML导出Excel NPOI导出Excel
- easyUI导出excel文件 提供下载功能
- northwind数据库导出为excel文件下载
- 使用AngularJS导出/下载excel文件
- java POI excel文件导出下载
- 文件下载利用poi导出excel
- Css命名规则
- 用RMAN复制 搭建 物理 Data Gurad 环境
- 中国遭美黑客攻击 重要机构网站被植入后门
- 局域网能用IP访问不能用电脑名字访问的解决办法
- 4A系统
- showModalDialog 下载文件问题 (如导出excel)
- 我的CSDN博客的开始
- 卸载Symantec Endpoint Protection, 无需密码的卸载方法
- 500 OOPScannot change directoryroot vsftp
- 去除DWR每次调用都输出日志的问题
- 浅析Spring 权限管理的实现
- Windows Sockets 错误码及出错原因
- TC SRM 573
- SQL Server阻止了对组件xp_cmdshell过程的解决方案