C# 下载文件并同时在ASP.NET中填充网格
我尝试使用ASP.NET按钮来做两件事C# 下载文件并同时在ASP.NET中填充网格,c#,asp.net,download,grid,C#,Asp.net,Download,Grid,我尝试使用ASP.NET按钮来做两件事 填充网格 下载/导出文件 我得到的代码发送的文件包含正确的数据,但是 A.未填充网格 B.出现异常Response.End() 你知道怎么修吗 protected void ButtonExportCSV_Click(object sender, EventArgs e) { try { ... Getting startDate, endDate List<WorkOrder> result = Get
Response.End()代码>
你知道怎么修吗
protected void ButtonExportCSV_Click(object sender, EventArgs e)
{
try
{
... Getting startDate, endDate
List<WorkOrder> result = GetWorkOders(startDate, endDate); // It populates Grid using GridViewWorkOrders.DataSource = result; GridViewWorkOrders.DataBind();
string csv = DataHelper.ToCsv(";", result);
var filename = "WorkOrders-ingresados-" + DateTime.Now.ToString("ddMMyyyy-HHmmsss");
Response.Clear();
Response.ContentType = "text/csv";
Response.AddHeader("Content-Disposition", "attachment;filename=" + filename + ".csv");
Response.Write(csv);
Response.End(); // The exception occurs here
}
catch (Exception ex)
{
}
}
但无论如何,网格并没有被填充
有没有可能的线索?好的。我认为问题是
您试图在一次响应中发送多个内容类型
,这是不可能的
要填充网格,服务器需要发送html
,因此内容类型为text/html
下载文件内容类型:text/csv
在代码中,您正在使用text/csv
覆盖text/html
(调用GridView.DataBind()
时默认设置)
因此,网格视图html将被删除,csv内容将附加到响应
备选方案
首先发送不带csv文件的GridView绑定响应
然后,一旦页面加载了新的网格,调用一个脚本函数,该函数调用服务器中的一个方法来下载csv文件您会遇到什么异常?显示来自getworkers的一些相关代码
method@JAG请看一下更新后的问题。@VivekSharma它发生在'Response.End()`
HttpContext.Current.Response.Flush(); // Sends all currently buffered output to the client.
HttpContext.Current.Response.SuppressContent = true; // Gets or sets a value indicating whether to send HTTP content to the client.
HttpContext.Current.ApplicationInstance.CompleteRequest(); // Causes ASP.NET to bypass all events and filtering in the HTTP pipeline chain of execution and directly execute the EndRequest event.