C# 在Response.End()之后执行代码

C# 在Response.End()之后执行代码,c#,export-to-excel,C#,Export To Excel,我在Response.End后执行代码时遇到问题 我正在使用它将datatable/ASP表导出到MS Excel.xls 导出完成,但我的Gridview不再加载。我用来加载gridview的命令是在Response.End之后编写的 我尝试使用HttpContext.Current.ApplicationInstance.CompleteRequest;但这没有帮助 我还尝试了Response.RedirectCharges\u Trs.aspx,false;还是不行 请帮忙……这是我的密码

我在Response.End后执行代码时遇到问题

我正在使用它将datatable/ASP表导出到MS Excel.xls


导出完成,但我的Gridview不再加载。我用来加载gridview的命令是在Response.End之后编写的

我尝试使用HttpContext.Current.ApplicationInstance.CompleteRequest;但这没有帮助

我还尝试了Response.RedirectCharges\u Trs.aspx,false;还是不行

请帮忙……这是我的密码

lblNotif.Text = "Selected items have been posted. Exporting XLS ... (will be saved in your desktop)";
exportToExcel(dt); //calls the function to export the datatable to excel, i passed dt=datatable to this function
timerNotif.Enabled = true;
btnSearch_Click(null, null); //called the event of a button that loads the gridview
下面是exporttoexcel函数


您可以尝试在btnSearch click event中添加代码吗?希望它是在调用export后用一些数据绑定网格,而不是调用该click event。

您不能为单个请求返回2个响应…您尝试为单个响应返回文件和页面。。。不去工作…不明白。在哪一行?我该怎么办?导出完成,但我的Gridview不再加载。我用来加载gridview的命令是在Response.End之后编写的至少对我来说,读取时我返回文件,然后在同一请求期间我呈现页面。可能是完全错误的-因此添加注释,而不是答案。每个请求只能返回一个响应…我在上一篇文章中看到了它..第一个注释块包含调用要导出的函数的代码。第二个块是导出到excel的函数
public void exportToExcel(DataTable dt)
    {

        Table dTable = new Table();
        TableRow dTableRow = new TableRow();

        //Column Headings
        for (int i = 0; i < dt.Columns.Count; i++)
        {
            TableCell tCell = new TableCell();
            tCell.Text = dt.Columns[i].ToString();
            dTableRow.Cells.Add(tCell);
        }

        dTable.Rows.Add(dTableRow);

        //Rows
        for (int i = 0; i < dt.Rows.Count; i++)
        {
            dTableRow = new TableRow();
            for (int j = 0; j < dt.Columns.Count; j++)
            {
                TableCell tCell = new TableCell();
                dTableRow.Cells.Add(tCell);
            }
            dTable.Rows.Add(dTableRow);
        }

        if (Response.IsClientConnected)
        {
            Response.Clear();
            Response.ClearContent();
            Response.ClearHeaders();
            Response.Buffer = true;
            Response.AddHeader("content-disposition", "attachment;filename=PostedCharges" + DateTime.Now.ToString("MMddyyyy") + ".xls");
            Response.Charset = "";
            Response.ContentType = "application/vnd.ms-excel";
            StringWriter sw = new StringWriter();
            HtmlTextWriter hw = new HtmlTextWriter(sw);
            dTable.RenderControl(hw);
            string style = @"<style> .textmode { mso-number-format:\@; } </style>";
            Response.Write(style);
            Response.Output.Write(sw.ToString());
            Response.Flush();
            Response.End();
        }
    }