C# 将GridView导出到XLS--分页问题

C# 将GridView导出到XLS--分页问题,c#,asp.net,gridview,C#,Asp.net,Gridview,我有一个GridView,我打算将它导出到.xls文件中。在此gridview中启用了分页。我当前使用的代码只能导出gridview的第一页 Response.Clear(); Response.Buffer = true; Response.AddHeader("content-disposition","attachment;filename=DataTable.xls"); Response.Charset = ""; Response.ContentTyp

我有一个GridView,我打算将它导出到.xls文件中。在此gridview中启用了分页。我当前使用的代码只能导出gridview的第一页

   Response.Clear();
   Response.Buffer = true;

   Response.AddHeader("content-disposition","attachment;filename=DataTable.xls");
   Response.Charset = "";
   Response.ContentType = "application/vnd.ms-excel";

   StringWriter sw = new StringWriter();
   HtmlTextWriter hw = new HtmlTextWriter(sw);

   //As you notice, below I tried to disable the paging yet it's unsuccessful
   //FYI I am able to really prevent first column, header row, and footer row to
   //be exported through this

   gvGridView.Columns[0].Visible = false;
   gvGridView.HeaderRow.Visible = false;
   gvGridView.FooterRow.Visible = false;
   gvGridView.AllowPaging = false;

   for (int i = 0; i < gvGridView.Rows.Count; i++)
   {
       gvGridView.Rows[i].Attributes.Add("class", "textmode");
   }
   gvGridView.RenderControl(hw);

   string style = @"<style> .textmode { mso-number-format:\@; } </style>";
   Response.Write(style);
   Response.Output.Write(sw.ToString());
   Response.Flush();
   Response.End();
Response.Clear();
Response.Buffer=true;
AddHeader(“内容处置”、“附件;文件名=DataTable.xls”);
响应。Charset=“”;
Response.ContentType=“application/vnd.ms excel”;
StringWriter sw=新的StringWriter();
HtmlTextWriter hw=新的HtmlTextWriter(sw);
//正如您所注意到的,下面我尝试禁用分页,但没有成功
//仅供参考,我能够真正防止第一列、页眉行和页脚行被删除
//可通过此网站导出
gvGridView.Columns[0]。Visible=false;
gvGridView.HeaderRow.Visible=false;
gvGridView.FooterRow.Visible=false;
gvGridView.AllowPaging=false;
对于(int i=0;i
我注意到之前有人问过这个问题,但没有正确的答案

感谢您的帮助


谢谢

在指定
gvGridView.allowpage=false后,您应该重新绑定
GridView
,然后导出。否则
.RenderControl(hw)
将仅呈现当前选定的
GridView
页面。

更改AllowPaging属性后,只需创建一个GridView.DataBind()。

我注意到它仍在工作。它以某种方式导出了我以前禁用的第一列、页眉行和页脚行。我自己解决了这个问题。在渲染控件()之前,是否要使它们不可见?你需要这样做。