导出excel 后 页面按钮失效(页面假死)
在 page_load 里加上如下代码:
string beforeSubmitJS = "\nvar exportRequested = false; \n";
beforeSubmitJS += "var beforeFormSubmitFunction = theForm.onsubmit;\n";
beforeSubmitJS += "theForm.onsubmit = function(){ \n";
beforeSubmitJS += "var returnVal = beforeFormSubmitFunction(); \n";
beforeSubmitJS += "if(exportRequested && returnVal) {_spFormOnSubmitCalled=false; exportRequested=false;} \n";
beforeSubmitJS += "return returnVal; \n";
beforeSubmitJS += "}; \n";
this.Page.ClientScript.RegisterStartupScript(this.GetType(), "alterFormSubmitEvent", beforeSubmitJS, true);
注册javascript程序,然后再按钮提交时发送一个参数:
this._btnSubmit.Attributes["onclick"] = "javascript:exportRequested=true;";
这样可以解决这个问题。
原理:页面按钮提交时会调用一个内置的方法并修改一个内置变量_spFormOnSubmitCalled,我们通过按钮来调用方法重置
这个参数的值,达到系统检索页面时,一直默认为未提交状态。
================注意点1=====================================
但是,如果是ascx 控件上 点击导出按钮,而不是aspx页面上点击按钮,那么 上面的方法会报错,
._btnSubmit为导出Excel文件的Button;
RegisterClientScriptBlock将代码注册到源文件后面,RegisterStartupScript的话,由于theForm.onsubmit 没有声明,会报错
================注意点2=====================================
生成的excel文件如果选择"打开",是很正常的;
选择“保存”,页面上的所有脚本失效,前题还必须是target为_self
错误信息为“未知错误“
个人分析认为这个是生成的页面虽然弹出打开,但设置的setHeader已经默认为excel文件格式,这个引响到了IE调用JS的方式(猜测),现在解决的方法为将target设为_blank,不过结果是会多一个白色的页面
================注意点2=====================================
protected void Page_Load(object sender, EventArgs e)
{
btnExcel = (Button)FindControl("btnExcel");
#region [moss里用Response生成Excel或word以后页面按钮失效问题,解决办法]
string beforeSubmitJS = "/nvar exportRequested = false; /n";
beforeSubmitJS += "var beforeFormSubmitFunction = theForm.onsubmit;/n";
beforeSubmitJS += "theForm.onsubmit = function(){ /n";
beforeSubmitJS += "var returnVal = beforeFormSubmitFunction(); /n";
beforeSubmitJS += "if(exportRequested && returnVal) {_spFormOnSubmitCalled=false; exportRequested=false;} /n";
beforeSubmitJS += "return returnVal; /n";
beforeSubmitJS += "}; /n";
this.Page.ClientScript.RegisterStartupScript(this.GetType(), "alterFormSubmitEvent", beforeSubmitJS, true);
this.btnExcel.Attributes["onclick"] = "javascript:exportRequested=true;";
#endregion
if (!Page.IsPostBack)
{
Page.DataBind();
}
}
转载于:https://www.cnblogs.com/luofeng99/archive/2011/07/05/2177596.html
导出excel 后 页面按钮失效(页面假死)相关推荐
- 解决导出Excel后0丢失的问题
需求背景 今天我们来看一个比较有价值的需求,这个需求中提到的一系列问题我们可能也会遇到并感到难以解决.好,闲话少叙,看一下具体需求: 1. 报表中的0.XXX导出Excel后0丢失,变成了.XXX,如 ...
- 填报表导出excel后不可写的单元格处于锁定状态
填报表单元格分为可写和不可写两种状态,当填报表在web上展现的时候可写单元格可以进行数据填报和修改,非可写单元格不可操作. 报表导出为excel时,润乾导出excel包默认情况下不对excel单 ...
- java excel 0没了,解决导出Excel后0丢失的问题
需求背景 1.报表中的0.XXX导出Excel后0丢失,变成了.XXX,如0.5变成.5: 2.报表数据集中数据有存在空和0的数据,在报表显示的时候要求空值不显示,0值显示0,当前都显示为0: 3.横 ...
- 博奥导出工程项目电子表格_博奥清单导出Excel后单位批量替换
博奥清单V17中,单位平方米和立方米的数字均为上标显示.为使打印出来后易于分辨,应BOSS要求,在导出Excel后将其修改为"m2"和"m3". VBS批量修改 ...
- Oracle 对某一字段下杂乱的内容进行 换行 空格 回车等操作 导出Excel后保留单元格内换行
Oracle 对某一字段下杂乱的内容进行 换行 空格 回车等操作 导出Excel后保留单元格内换行 效果图如下 修改前 修改后: 瞬间整洁多了 心情也好了 ;导出Excel 单元格也会带换行 sql如 ...
- esaypoi导出excel后office打开报错
** esaypoi导出excel后office打开报错 ** 使用esaypoi导出excel后office打开报错,提示 "Excel 无法打开文件"导出表格 (1).xlsx ...
- java定时任务:oracle导出excel后,发送excel作为附件的邮件
定时任务类: package com.cairenhui.sec.task;import java.io.File; import java.io.FileOutputStream; import j ...
- 数据库导出EXCEL后0丢失
情景在现: 在一个数据丢失的处理问题中,去生产环境去取数据,导出类型为excel,结果发现导出的某一列中数据前面的0都 自动的消失了. 解决发法: 1.导出工具为Dbvisualizer ...
- java分页导出excel_报表中利用API来实现导出excel列后分页
在报表中,当统计报表统计的指标非常多,在页面上展现的时候,整个报表会变得非常的长,经常会通过设置滚动条拖拽来查看整个报表,当这时用不分页导出excel后,查看excel中报表被导出到一个sheet中, ...
最新文章
- 编程控制Word文档中Table的赋值
- 思考并实现以下程序功能:实现一个抢红包的程序 java
- ie6 offsetWidth/offsetHeight无效
- 矩阵乘法(信息学奥赛一本通-T1125)
- ios进度条Demo一个
- 判定浏览器是否支持原生透明
- Linux,vi编辑器使用手册
- 计算机SCI期刊征稿 | 影响因子最高10+,一区,毕业/评职称不要错过!
- TCP和TCP/IP的区别
- nod32 激活码 地址 NOD 32
- 百度杀毒,360安全卫士的那些私下的功夫 。
- 初探 Linux操作系统 (一):站在巨人的肩膀上
- SONY WH-1000XM3 User Guide
- 灭霸打了一个响指,我就学会了C语言的「分支与循环语句」
- Python系列英文原版电子书
- 嵌入式Linux使用TFT屏幕:使用树莓派4B的MIPI-DSI接口点亮ST7701S屏幕
- ip地址+斜杠数字含义
- jsp小区物业管理系统
- android分区划分,Android分区
- python双色球-(一)采集双色球历史数据