asp.net导出excel并提供给客户端下载后,怎么给页面一个返回值

蓬莱东路走九遭 蓬莱东路走九遭 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
页面<form>表单中有一个asp服务器控件的按钮和一个gridview,点击按钮,先执行OnClientClick,指向一个js函数,这个函数的功能是在页面增加一个Loading加载中效果的div,之后执按钮OnClick绑定的.cs文件中的函数,该函数会取得gridview的所有数据在服务器上生成一个excel文件,并输出给客户端弹窗下载,以上功能都完成了,现在的问题是,如何在当用户点击下载窗口上的保存、取消后,通知页面删除Loading加载效果的div

在前台加过hidden、select等控件,也加了属性ruant=server,打算通过在后台改变它的值来触发onChange事件通知页面,但当后台按钮单击的函数里同时写了导出excel、输出下载的代码后,改变控件值的代码没出效果,页面上的值并没被改变,后台注册js脚步也是一样

页面布局主要代码:
<body onload="load()" style=" background:#F4F4F4;">
<form id="form1" runat="server">
<asp:Button ID="btnExport" Text="导出Excel" OnClick="btnExport_Click" OnClientClick="loadingDelay(10000)" runat="server"/>

<div id="divMain_B">
<asp:GridView ID="gdvMain" runat="server" AutoGenerateColumns="False" Width="1150px"
GridLines="None" ShowFooter="True" DataSourceID="SqlDataSource1" ShowHeaderWhenEmpty="True"
EmptyDataText="    没有您查找的数据">


.cs文件中按钮单击事件绑定的函数:
//将gridviewd的数据导出到excel文件并发送到客户端下载(将在服务器磁盘上生成一份excel文件)
protected void btnExport_Click(object sender, EventArgs e)
{
//类似下面的这行代码去改变页面控件的值,均无效果,线程sleep也不行
this.sltLoadingTag.SelectedIndex = 1;

////grid导出excel文件
ExcelHelper helper = new ExcelHelper();
helper.ExceuteGridView(this.gdvMain, Page.Response);
}


ExceuteGridView函数最后的提供输出下载窗口的代码:
r.Clear();
r.Charset = "GB2312";
r.ContentEncoding = System.Text.Encoding.UTF8;
r.ContentType = "application/octet-stream";
//通知浏览器下载文件
r.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8));
// 添加头信息,指定文件大小,让浏览器能够显示下载进度
r.AddHeader("Content-Length", bytes.Length.ToString());
//使用二进制流传输(若使用r.WriteFile传输,将使下载后的excel文件格式异常)
r.BinaryWrite(bytes);
r.Flush();
r.End();
...全文
评论 6
收藏 已收藏
分享
返回顶部
蓬莱东路走九遭
.NET社区 62,271 成员 668,968 内容