Updatepanel下文件导出问题

今天遇到很头疼的问题,浪费了几个小时,搞得我都快怀疑人生了,特做个记录。

功能:页面上点击一个按钮,实现Excel导出

实现:按钮添加点击事件,事件调用导出方法,输出Excel文件流,如下:

 

问题:点击按钮,触发事件,调用上面的方法,获取Excel二进制流,对Response进行设置,结果没有任何反应,不会下载,通过抓包请求,看到数据的确输出到前端了,咋回事呢。

好奇怪!!!!

然后各种排查,如:二进制流的排查,Response设置是否正确等,还是不行,有点烦躁呀(悲伤)

真的好奇怪!!!!!

然后继续排查,一如既往的尝试,流的问题、Response设置的问题,各种百度、谷歌,还是不行,有点受不了(警告)(警告)

奇怪到我怀疑人生!!!

开始找高手,拉过来捋一遍,也没解决,通过url地址直接访问以及其它页面用按钮触发下载都可以成功,就是这个页面点击按钮不行,啊啊啊啊啊啊……崩溃呀!!!!!!!!!!

冷静……,冷静……,冷静………………,肯定哪里有问题,突然想起来,这个按钮被Updatepanel包着,秒懂呀(大笑)(大笑)(大笑)(大笑)(大笑)

Updatepanel下面控件,触发动作,属于异步(Ajax)操作,Ajax不支持文件导出,然后各种百度、谷歌,求证,果然是这样子。

问题终于得到解决!

 

现在主流的js框架,对于附件导出也都是做了特殊处理的,比如使用a标签、拼接Form表单、window.open等。

售楼框架就封装了一个Form表单的实现,在Common.js中有个CustomPost,如下:

 

posted @ 2024-03-27 10:32  XiongHui23  阅读(24)  评论(0)    收藏  举报