首页 新闻 会员 周边 捐助

.net后台执行不了jS脚本,求大神帮忙看看

0
悬赏园豆:10 [已解决问题] 解决于 2015-08-15 21:44

 protected void btnPurch_Click(object sender, EventArgs e)
    {
        string beginDate = txtBeginDate.Text;
        string endDate = txtEndDate.Text;
          
            //执行存储过程
            if (pandiandal.purch(beginDate, endDate) == true)
            //导出数据
            {
                purch_Toexcel("采购数据&配件数据.xlsx");   
            }
    }

 public void purch_Toexcel(string fileName)
    {
        ExcelPackage excel = new ExcelPackage();
        ExcelWorksheet sheet = excel.Workbook.Worksheets.Add("采购数据");

         /* 把内容填到excel部分省略*/

 fileName = HttpUtility.UrlEncode(fileName);
        Response.ContentType = "application/vnd.ms-exel";
   Response.AddHeader("Content-Disposition", string.Format("attachment;filename={0}", fileName));
     Response.Clear();
        excel.SaveAs(Response.OutputStream);
        Response.Flush();
        Response.End();
        ClientScript.RegisterStartupScript(ClientScript.GetType(), "myscript", "<script>window.parent.hideLoading();</script>");

}

(红色的是脚本,脚本执行没反应,注释掉上面蓝的代码脚本就正常执行,但不能下载文件)

我要做的功能是点导出excel时页面显示等待状态,执行完(出现下载文件的时候页面恢复正常)

现在是点了按钮的时候一直到下载文件页面都是等待状态

包子wxl的主页 包子wxl | 初学一级 | 园豆:186
提问于:2015-08-14 11:20
< >
分享
最佳答案
0

Response.Flush();
Response.End();

这两句删掉试试。。。

你注册脚本那句你网上搜一下是不是也有问题。。。

收获园豆:4
顾晓北 | 专家六级 |园豆:10898 | 2015-08-14 11:56

看来我没记错,注册脚本应该是Page.RegisterStartupScript...

 

看看这个链接:http://blog.csdn.net/qiujialongjjj/article/details/6680252

顾晓北 | 园豆:10898 (专家六级) | 2015-08-14 11:59

注释掉两句也不行,反而导出excel格式有点问题,脚本是可以的,按这个链接的去写也是一样的问题,只要有文件流下载,那个脚本的效果就没有了,不知道是什么原因0.0

包子wxl | 园豆:186 (初学一级) | 2015-08-14 12:08

@.net包子: 我想应该是你这个思路根本就有问题,你已经将响应的类型改为excel,浏览器就按excel来解析,结果你运行一个注册脚本的东西,再说了,客户端如果是按照excel的格式来分析服务器发来的响应,那如果excel还没下载完,你就要执行那个脚本么?

顾晓北 | 园豆:10898 (专家六级) | 2015-08-14 12:56

@顾晓北: 那如果我要实现我想实现的功能应该怎么做呢

包子wxl | 园豆:186 (初学一级) | 2015-08-14 14:10

@.net包子: 你这个功能都做了什么?

顾晓北 | 园豆:10898 (专家六级) | 2015-08-14 15:23

@顾晓北: 点击导出excel的功能用来导公司的一些每月明细数据到excel下载下来,因为数据可能会有点多,而且要执行的储存过程可能也要一些时间,所以要把页面通过JS变成Loading...的动画等待图标,以免出现假死状态,当excel都导到excel可以下载了,就把这个页面变回正常(把Loading...取消)。

包子wxl | 园豆:186 (初学一级) | 2015-08-14 15:40

@.net包子: 先执行一下存储过程,数据统计好以后再填到excel里面,然后再下载?

顾晓北 | 园豆:10898 (专家六级) | 2015-08-14 16:45

@顾晓北: 是的,没错

包子wxl | 园豆:186 (初学一级) | 2015-08-14 17:43
其他回答(2)
0

Response.End();

收获园豆:4
✎﹏ℳ๓₯㎕ღ | 园豆:1499 (小虾三级) | 2015-08-14 11:36

应该不是,我试过把这句注释掉也是不变,而且不要这句导出的excel会有问题

支持(0) 反对(0) 包子wxl | 园豆:186 (初学一级) | 2015-08-14 11:40

@.net包子: Response.End();放到最后呢?

支持(0) 反对(0) ✎﹏ℳ๓₯㎕ღ | 园豆:1499 (小虾三级) | 2015-08-14 11:40

@Mr_Lxs: 也一样,执行不了脚本,其它功能没问题

支持(0) 反对(0) 包子wxl | 园豆:186 (初学一级) | 2015-08-14 11:42

@.net包子: Response.Flush();
           Response.End();

      都放在后面。

支持(0) 反对(0) ✎﹏ℳ๓₯㎕ღ | 园豆:1499 (小虾三级) | 2015-08-14 11:43

@Mr_Lxs: 我试过将脚本放在方法的开头都不行,只要有下面的下载代码就执行不到脚本,可能是执行了但看不到效果

支持(0) 反对(0) 包子wxl | 园豆:186 (初学一级) | 2015-08-14 11:47

@.net包子: js脚本是不是有问题?单独执行一下脚本试试。

支持(0) 反对(0) ✎﹏ℳ๓₯㎕ღ | 园豆:1499 (小虾三级) | 2015-08-14 11:48

@Mr_Lxs: 没有问题,直接点击不执行导excel的方法是可以执行成功的

支持(0) 反对(0) 包子wxl | 园豆:186 (初学一级) | 2015-08-14 11:50
0

把这句放到上面某一句之后,然后慢慢调试。

收获园豆:2
清海扬波 | 园豆:825 (小虾三级) | 2015-08-14 12:02

有蓝色的代码放在哪里都不行,放在一点击先执行脚本都不行,不要蓝的代码脚本放在哪里都执行。0.0怎么办

支持(0) 反对(0) 包子wxl | 园豆:186 (初学一级) | 2015-08-14 12:11
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册