Q:

Download file and populate Grid in ASP.NET at the same time

I try to use a ASP.NET button event to do two things are

Populate a Grid
Download/Export a file

The code I have got sends the file with correct data but 
A. Grid is not populated
B. There is an exception Response.End();
Any clue how to fix it?
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)
    {

    }
}

UPDATE #1
I could get rid of the exception replacing Response.End() with 
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.

but anyway grid is not populated.
ANy clue if it is possible at all?

A:

ok. i think the the issue is 
you are trying to send multiple Content-Type in single response which is not possible

to populate Grid, server need to send html so the Content-Type: text/html
to download a file Content-Type: text/csv

in your code you are overriding the text/html (which is default when GridView.DataBind() called) with text/csv
so the grid view html will be erased and csv content will be attached to response
alternate
first send GridView Bind response without the csv file
then once page loaded with new Grid, call a script function which calls a method in server to download csv file

