• 当用GridView导出Execl的时候,会发生只能在执行 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" %>
    附:Gridview导出Execl可分页全部导出代码(C#)

    using System;
    using System.Data;
    using System.Configuration;
    using System.Collections;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;
    using System.Data.SqlClient;
    using System.IO;

    public partial class EXportTest : System.Web.UI.Page
    {
    protected void Page_Load(object sender, EventArgs e)
    {
    if (!Page.IsPostBack)
    {
                BindData(); 
            }

        }

    private string ConnectionString
    {

    get { return @"Server=localhost;Database=Northwind;
            Trusted_Connection=true"; }

        }



    private void BindData()
    {
    // make the query 
    string query = "SELECT * FROM Categories";
            SqlConnection myConnection = new SqlConnection(ConnectionString);
            SqlDataAdapter ad = new SqlDataAdapter(query, myConnection);
            DataSet ds = new DataSet();
            ad.Fill(ds, "Categories");
            GridView1.DataSource = ds;
            GridView1.DataBind(); 

    /* It's a good idea if you can Cache the DataSet */

        }

    public override void VerifyRenderingInServerForm(Control control)
    {

    // Confirms that an HtmlForm control is rendered for
            the specified ASP.NET server control at run time.

        }

    protected void Button1_Click(object sender, EventArgs e)
    {
            Response.Clear();

            Response.AddHeader("content-disposition",
    "attachment;filename=FileName.xls");

            Response.Charset = "";

    // If you want the option to open the Excel file without saving than

    // comment out the line below

    // Response.Cache.SetCacheability(HttpCacheability.NoCache);

            Response.ContentType = "application/vnd.xls";

            System.IO.StringWriter stringWrite = new System.IO.StringWriter();

            System.Web.UI.HtmlTextWriter htmlWrite =
    new HtmlTextWriter(stringWrite);

    // turn off paging 
            GridView1.AllowPaging = false;
            BindData(); 


            GridView1.RenderControl(htmlWrite);

            Response.Write(stringWrite.ToString());

            Response.End();

    // turn the paging on again 
            GridView1.AllowPaging = true;
            BindData();

        }

    protected void GridView1_PageIndexChanging(object sender,
        GridViewPageEventArgs e)
    {
            GridView1.PageIndex = e.NewPageIndex;
            BindData(); 
        }
    }

  • 相关阅读:
    Javal连载4-注释&class与public class区别
    HTML连载21-序选择器上
    Python连载21-collections模块
    Java连载3-编译与运行阶段详解&JRE,JDK,JVM关系
    HTML连载20-并集选择器&兄弟选择器
    Python连载20-偏函数&zip函数&enumerate函数
    Java连载2-Java特性
    HTML连载19-子元素选择器&交集选择器
    [刷题] PTA 7-58 求整数序列中出现次数最多的数
    [刷题] PTA 7-56 找鞍点
  • 原文地址:https://www.cnblogs.com/suizhikuo/p/3482844.html
Copyright © 2020-2023  润新知