今天用Asp.net开发了个程序,用户可以导出查询内容(gridview),由于数据较大4MB,在导出Excel时一直出错,症状表现为一切后台事件不响应,直接跳出错误页面,说什么DNS error 等,刚开始以为是代码出了问题,查到最后却是Gridview.Viewstate的问题,解决方案:
将gridview.viewstate设为disable
在后台代码中将查询出来的数据放到Session中,注意放到Viewstate中照样出错,所以只能牺牲服务器内存了,
然后在Page_load事件中加入以下代码
gridview.datasource=(DataTable)Session["dtResult"];
DataBind();
然后在按导出按钮就可以正常导出Excel了。