`

只能在执行 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[0].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();
        }

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    asp.net导出excel报错的处理方法

    但在实现这一功能的过程中,开发人员可能会遇到一个常见的错误:“只能在执行Render()的过程中调用RegisterForEventValidation”。这一错误主要发生在使用GridView组件导出Excel时。本文将详细介绍该错误产生的原因...

    gridView导出Excel

    在ASP.NET的页面指令中,`EnableEventValidation`属性设为`false`是为了在导出时禁用事件验证,避免上述的“只能在执行 Render() 的过程中调用RegisterForEventValidation”错误。 总结来说,将ASP.NET中的...

    Asp.net中的GridView导出遇到的两个问题和解决方法

    第二,只能在执行Render()的过程中调用RegisterForEventValidation。以下将详细阐述这两个问题的原因以及对应的解决方法。 首先,关于问题一:类型“Grid1”的控件“gvCompareDetail”必须放在具有runat=server的...

    Asp.Net数据输出到EXCEL表格中

    在某些情况下,可能会遇到“只能在执行 Render() 的过程中调用 RegisterForEventValidation”的错误。这是由于ASP.NET的事件验证机制导致的。可以有以下两种解决办法: 1. 修改`web.config`,关闭事件验证:`...

Global site tag (gtag.js) - Google Analytics