今天看到有朋友在论坛上面问到,我是使用PagedDataSource来绑定GridView的数据源的,然后导出数据到execl中只导出了当前页的数据,请问要如何导出GridView中全部页的数据呢?
这个其实很简单,最方便的方法是在导出前取消分页,让GridView加载全部数据,导出后再重新设置好分页就好了。
代码可以参考下面:
GridView1.AllowPaging = false; //清除分页
Data_DataBind(); //自定义的绑定数据事件,具体代码省略了
Response.Clear();
Response.Buffer = true;
Response.ContentType = "Application/ms-excel";//设置导出的文件类型为excel文件。
Response.AppendHeader("Content-Disposition", "attachment;filename=abc.xls");//此处的文件名是可以修改的
Response.Charset = "GB2312";
Response.ContentEncoding = System.Text.Encoding.UTF7;
System.IO.StringWriter oStringWriter = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
GridView1.RenderControl(oHtmlTextWriter);
Response.OutPut.Write(oStringWriter.ToString());
Response.Flush();
Response.End();
GridView1.AllowSorting = true; //重新设置分页
Data_DataBind(); //重新绑定数据
以上方法注意要在页面顶部加上代码<%page EnableEventValidation="false" %>,要不然程序会报错。
其实已经获取到数据源了,那么导出数据到excel中,还有其它很多方法,不仅仅限于上面一种,比如本站的:
GridView数据导出到Excel与Excel数据导入到GridView示例N