本帖最后由 yannanlee724 于 2014-11-24 11:29:15 编辑

解决方案 »

  1.   

    代码中写的几个.Write("<script>alert('导出成功!');</script>");都不好用  请大神们帮看看!谢谢
      

  2.   

    Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "ok", "alert('导出成功!')",true);
      

  3.   

    首先你对后台Response.Write输出JS的生命周期没清楚,在asp.net后台输出Js必须页面完全加载完才输出。
      

  4.   

    我这个页面有一个导出Excel按钮,点击导出后弹出一个DIV进行遮蔽,之后开始调用后台事件,就是我上面贴出的两个方法,我理想的情况是加载完方法后弹出一个导出成功,或者回传刷新页面,但是都做不到,其他页都没问题,所以我怀疑是不是HttpResponse搞的鬼,现在就是不知道问题出在哪,该怎么解决
      

  5.   

    你这完全就是不合理的做法。不管你怎么输出,都会直输出到你的xls文件里。
    或许,你可以把Response.BufferOutput =false关闭输出缓存,这样就可以一边生成,一边下载,感觉不到等待
      

  6.   

    问题在这句:resp.AppendHeader("Content-Disposition", "attachment;filename=" + ExcelName...
    也就是导出时当前http响应类型根本不是普通网页的text/html类型了,你的任何html代码都不可能被运行了
      

  7.   

    因为导出方法的最后就结束响应了resp.End();  去掉吧
      

  8.   

    最好还是将导出的方法写到单独的ashx中,利用ajax回调来弹提示
      

  9.   

    我这个页面有一个导出Excel按钮,点击导出后弹出一个DIV进行遮蔽,之后开始调用后台事件,就是我上面贴出的两个方法,我理想的情况是加载完方法后弹出一个导出成功,或者回传刷新页面,但是都做不到,其他页都没问题,所以我怀疑是不是HttpResponse搞的鬼,现在就是不知道问题出在哪,该怎么解决
    我说的你还不明白么?意思你JS不要放在后台输出,写在JS文件里面或者写在ASPX页面里面,当你点击按钮的时候先调用JS!
    你放在后台做JS输出永远是页面完全加载完才会调用JS,这是.net页面的生命周期。
      

  10.   

    大哥  怎么解决呢
    导出放在一个隐藏的iframe中,这样不影响当前页面上脚本的运行