在 ASP.NET 2.0 中将GridView控件中的数据导出到Excel的代码运行无误,但在ASP.NET AJAX 1.0中就出错,如何解决这个问题?
以下是将GridView中的数据导出到Excel的代码: 
protected void Button8_Click(object sender, EventArgs e) 

Response.Clear(); 
Response.Buffer = true; 
Response.Charset = "GB2312"; 
Response.AppendHeader("Content-Disposition", "attachment;filename=FileName.xls"); 
// 如果设置为 GetEncoding("GB2312");导出的文件将会出现乱码!!! 
Response.ContentEncoding = System.Text.Encoding.UTF7; 
Response.ContentType = "application/ms-excel";//设置输出文件类型为excel文件。 
System.IO.StringWriter oStringWriter = new System.IO.StringWriter(); 
System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter); 
this.GridView1.RenderControl(oHtmlTextWriter); 
Response.Output.Write(oStringWriter.ToString()); 
Response.Flush(); 
Response.End(); 

public override void VerifyRenderingInServerForm(Control control) 
{ }
在ASP.NET2.0框架中当用GridView导出Execl的时候,会发生只能在执行 Render() 的过程中调用 RegisterForEventValidation的错误提示。 
有两种方法可以解决以上问题: 
1.修改web.config(不推荐)<pages enableEventValidation ="false" ></pages> 
2.直接在导出Execl的页面修改 
<%@ Page Language="C#" EnableEventValidation = "false" AutoEventWireup="true" CodeFile="ExportGridView.aspx.cs" Inherits="ExportGridView" %> 

解决方案 »

  1.   

    不能用Response()这个方法。用ScriptManager.RegisterClientScriptBlock()等方法代替看看
      

  2.   

    把 Button 放到UpdatePanel 外邊就可以了 。
      

  3.   

    把 Button 放到UpdatePanel 外邊就可以了 。谢谢!
      

  4.   

    SQL语句取数到EXCEL http://www.onlinedown.net/soft/44040.htm
      

  5.   

    遇到另外一个辣手问题:如果直接在IE中打开要从GridView中导出到Excel的Excel文件时,不能打开。原因是系统自动为文件名后面加了 “[1]”,导致不能在IE中直接打开该文件。例如原来文件名为“FileName.xls”,但在IE中打开时文件名却变为 “FileName[1].xls”。请教大家如何解决这个问题啊?