laihuaiqing 发表于 2013-1-26 13:33:15

只能在执行 Render() 的过程中调用 RegisterForEventValidation;

当用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" %>

还要在后台代码重写
 public override void VerifyRenderingInServerForm(Control control)
        {
        }
导出代码
protected void btnExcel_Click(object sender, EventArgs e)
        {
            dvList.AllowPaging = false;
            dvList.Columns.Visible = false;
            UpdateView();
            Response.ClearContent();
            Response.Charset = "UTF8";
            Response.ContentEncoding = System.Text.Encoding.UTF8;
            Response.AddHeader("content-disposition", "attachment; filename= " + HttpUtility.UrlEncode("学生信息.xls", Encoding.UTF8).ToString());
            Response.ContentType = "application/excel";
            StringWriter sw = new StringWriter();
            HtmlTextWriter htw = new HtmlTextWriter(sw);
            dvList.RenderControl(htw);
            Response.Write(sw.ToString());
            Response.End();
        }
页: [1]
查看完整版本: 只能在执行 Render() 的过程中调用 RegisterForEventValidation;