您的位置:首页 > 其它

从GridView把数据导成Excel会出现的问题

2012-01-09 21:36 176 查看
1.当用GridView导出Execl的时候,会发生只能在执行 Render() 的过程中调用 RegisterForEventValidation的错误提示。

解决方法:EnableEventValidation = "false" 加上这个

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="InfoSortSel.aspx.cs" EnableEventValidation = "false" Inherits="YuankangThesaurus_InfoManage_InfoSortSel" %>

2.必须放在具有 runat=server 的窗体标记内。

解决方法:加上

public override void VerifyRenderingInServerForm(Control control)

{

}

代码如下:

protected void Button1_Click(object sender, EventArgs e)

{

Response.Clear();//清除缓冲区流中所有内容的输出

Response.Buffer = true;//获取和设置一个值,该值指出是否缓冲输出,并在完成处理整个响应之后将其发送

Response.Charset = "GB2312";//获取和设置输出流的http字符集;

Response.AppendHeader("Content-Disposition", "attachment;filename = FileName.xls");//将http头添加到输出流

//如果设置成GB2312导出的将是乱码

Response.ContentEncoding = System.Text.Encoding.UTF7;

Response.ContentType = "application/ms-excel";//设置输出文件类型为excel文件

System.IO.StringWriter oStringWriter = new StringWriter();//实现一个用于将信息写入字符串 TextWriter 该信息存储在基础StringBuilder 中

System.Web.UI.HtmlTextWriter oHtmlTextWriter = new HtmlTextWriter(oStringWriter);//将标记字符和文本写入到asp.net控件输出流

this.gv_Repository_PathologyInfo.RenderControl(oHtmlTextWriter);

Response.Output.Write(oStringWriter.ToString());

Response.Flush();//向客户端发送所有输出流

Response.End();//结束

}

public override void VerifyRenderingInServerForm(Control control)

{

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐