在 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 后 页面按钮失效(页面假死)相关推荐

  1. 解决导出Excel后0丢失的问题

    需求背景 今天我们来看一个比较有价值的需求,这个需求中提到的一系列问题我们可能也会遇到并感到难以解决.好,闲话少叙,看一下具体需求: 1. 报表中的0.XXX导出Excel后0丢失,变成了.XXX,如 ...

  2. 填报表导出excel后不可写的单元格处于锁定状态

     填报表单元格分为可写和不可写两种状态,当填报表在web上展现的时候可写单元格可以进行数据填报和修改,非可写单元格不可操作. 报表导出为excel时,润乾导出excel包默认情况下不对excel单 ...

  3. java excel 0没了,解决导出Excel后0丢失的问题

    需求背景 1.报表中的0.XXX导出Excel后0丢失,变成了.XXX,如0.5变成.5: 2.报表数据集中数据有存在空和0的数据,在报表显示的时候要求空值不显示,0值显示0,当前都显示为0: 3.横 ...

  4. 博奥导出工程项目电子表格_博奥清单导出Excel后单位批量替换

    博奥清单V17中,单位平方米和立方米的数字均为上标显示.为使打印出来后易于分辨,应BOSS要求,在导出Excel后将其修改为"m2"和"m3". VBS批量修改 ...

  5. Oracle 对某一字段下杂乱的内容进行 换行 空格 回车等操作 导出Excel后保留单元格内换行

    Oracle 对某一字段下杂乱的内容进行 换行 空格 回车等操作 导出Excel后保留单元格内换行 效果图如下 修改前 修改后: 瞬间整洁多了 心情也好了 ;导出Excel 单元格也会带换行 sql如 ...

  6. esaypoi导出excel后office打开报错

    ** esaypoi导出excel后office打开报错 ** 使用esaypoi导出excel后office打开报错,提示 "Excel 无法打开文件"导出表格 (1).xlsx ...

  7. java定时任务:oracle导出excel后,发送excel作为附件的邮件

    定时任务类: package com.cairenhui.sec.task;import java.io.File; import java.io.FileOutputStream; import j ...

  8. 数据库导出EXCEL后0丢失

    情景在现: 在一个数据丢失的处理问题中,去生产环境去取数据,导出类型为excel,结果发现导出的某一列中数据前面的0都 自动的消失了. 解决发法:        1.导出工具为Dbvisualizer ...

  9. java分页导出excel_报表中利用API来实现导出excel列后分页

    在报表中,当统计报表统计的指标非常多,在页面上展现的时候,整个报表会变得非常的长,经常会通过设置滚动条拖拽来查看整个报表,当这时用不分页导出excel后,查看excel中报表被导出到一个sheet中, ...

最新文章

  1. 编程控制Word文档中Table的赋值
  2. 思考并实现以下程序功能:实现一个抢红包的程序 java
  3. ie6 offsetWidth/offsetHeight无效
  4. 矩阵乘法(信息学奥赛一本通-T1125)
  5. ios进度条Demo一个
  6. 判定浏览器是否支持原生透明
  7. Linux,vi编辑器使用手册
  8. 计算机SCI期刊征稿 | 影响因子最高10+,一区,毕业/评职称不要错过!
  9. TCP和TCP/IP的区别
  10. nod32 激活码 地址 NOD 32
  11. 百度杀毒,360安全卫士的那些私下的功夫 。
  12. 初探 Linux操作系统 (一):站在巨人的肩膀上
  13. SONY WH-1000XM3 User Guide
  14. 灭霸打了一个响指,我就学会了C语言的「分支与循环语句」
  15. Python系列英文原版电子书
  16. 嵌入式Linux使用TFT屏幕:使用树莓派4B的MIPI-DSI接口点亮ST7701S屏幕
  17. ip地址+斜杠数字含义
  18. jsp小区物业管理系统
  19. android分区划分,Android分区
  20. python双色球-(一)采集双色球历史数据

热门文章

  1. uoj#388. 【UNR #3】配对树(线段树合并)
  2. Java 集合-集合介绍
  3. 1.0 Hadoop的介绍、搭建、环境
  4. Arduino 端口通信实例
  5. linux驱动分离分层的概念
  6. NSURL中fileURLWithPath和URLWithString
  7. java01基础简介
  8. 混合模型和EM---混合高斯
  9. Java入门系列-22-IO流
  10. 区块链监管的一年,剥离“币”的区块链技术该何去何从?