在Response.Flush()代码不起作用之后

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Response.Flush()代码不起作用之后相关的知识,希望对你有一定的参考价值。

对不起,如果它太荒谬的问题。但是我有一个调用事件的asp按钮。 Event创建一个数据表并将数据表下载为xls。它工作正常,我可以看到下载的文件,但我看不到我显示数据表的gridview。有没有人对它有所了解。

            Response.ClearContent();
            Response.ContentEncoding = System.Text.Encoding.GetEncoding("windows-1254");
            Response.Charset = "windows-1254"; 
            Response.AddHeader("content-disposition", attachment);
            Response.ContentType = "application/xsl";
            string tab = "";
            foreach (DataColumn c in dt.Columns)
            {
                Response.Write(tab + c.ColumnName);
                tab = "	";
            }

            \..somethings about writing to file ...

            HttpContext.Current.Response.Flush();
            HttpContext.Current.Response.SuppressContent = true; 
            HttpContext.Current.ApplicationInstance.CompleteRequest();

我尝试在response.flush()之后创建数据表并导入到gridview。当我调试下面的代码时它工作正常。我可以在调试部分看到变量,但gridview仍然看不到。

            Response.ClearContent();
            Response.ContentEncoding = System.Text.Encoding.GetEncoding("windows-1254");
            Response.Charset = "windows-1254"; 
            Response.AddHeader("content-disposition", attachment);
            Response.ContentType = "application/xsl";
            string tab = "";
            foreach (DataColumn c in dt.Columns)
            {
                Response.Write(tab + c.ColumnName);
                tab = "	";
            }

            \..somethings about writing to file ...

            HttpContext.Current.Response.Flush();
            HttpContext.Current.Response.SuppressContent = true; 
            HttpContext.Current.ApplicationInstance.CompleteRequest();
            queryString = textbox.Text.Replace("
", " ").ToString();
            table = connectDatabase(queryString);
            GridView1.DataSource = table;
            GridView1.DataBind();
            if (GridView1.Rows.Count > 0)
            {
                GridView1.Visible = true;
            }
答案

在你的情况下,你必须创建一个新的.aspx页面,让我们说“download.aspx”你将有下载代码,在你的主页面你可以有你的网格绑定代码,看下面的例子。

MainPage.aspx

btnGetData_click()
{
 dt=connectdb(query); 
 GridView1.DataSource = dt; 
 GridView1.DataBind(); 
 GridView1.Visible=true;

 Session("ExcelData") = dt;

 string url = "download.aspx";
 string s = "window.open('" + url + "', 'download_window', 'width=100,height=100,left=100,top=100,resizable=no');";
 ClientScript.RegisterStartupScript(this.GetType(), "script", s, true);

}

download.aspx

page_load()
{
  if(!IsPostBack)
  {
            DataTable dt = (DataTable)Session("ExcelData");
            Response.ClearContent();
            Response.ContentEncoding = System.Text.Encoding.GetEncoding("windows-1254");
            Response.Charset = "windows-1254"; 
            Response.AddHeader("content-disposition", attachment);
            Response.ContentType = "application/xsl";
            string tab = "";
            foreach (DataColumn c in dt.Columns)
            {
                Response.Write(tab + c.ColumnName);
                tab = "	";
            }

            \..somethings about writing to file ...

            HttpContext.Current.Response.Flush();
            HttpContext.Current.Response.SuppressContent = true; 
            HttpContext.Current.ApplicationInstance.CompleteRequest();
  }

}

以上是关于在Response.Flush()代码不起作用之后的主要内容,如果未能解决你的问题,请参考以下文章

VS2010每当程序运行之后点击代码页就不起作用啥原因?如果不运行程序就好

UdpClient,在 Send() 之后的 Receive() 不起作用?

% 在 rand() c++ 之后不起作用

在 iOS 上,为啥在当前视图控制器之后立即关闭视图控制器不起作用?

在 onclick 条形图列之后,Segue 在 coreplot Graphview.m 中不起作用

UIPinchGestureRecognizer 在 UIRotationGestureRecognizer 之后不起作用