• 只能在执行 Render() 的过程中调用 RegisterForEventValidation(RegisterForEventValidation can only be called during Render(); )


    当用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(); 
        }

    }
    VB.net:(GridView直接帮定DataSource控件)
    Imports Microsoft.VisualBasic
    Imports System
    Imports System.IO


    Partial 
    Class ManageContents
        
    Inherits System.Web.UI.Page

        
    Protected Sub Page_Load(ByVal sender As ObjectByVal e As System.EventArgs) Handles Me.Load
            
    'If Not Me.IsPostBack Then
            '    If Request.QueryString("username") <> "xucanzhao" Then
            '        Response.Redirect("default.aspx?returnUrl=nousername")
            '    End If
            'End If
            ' ClientScript.RegisterStartupScript(Me.GetType(), "haha", "<script>alert('haha');</script>")
        End Sub


        
    Protected Sub btnExportExcel_Click(ByVal sender As ObjectByVal e As System.EventArgs) Handles btnExportExcel.Click
            Response.Clear()
            Response.Buffer 
    = True

            Response.Charset 
    = "utf-8"

            Response.AddHeader(
    "Content-Disposition""attachment;filename=FileFlow.xls")
            Response.ContentType 
    = "application/ms-excel"
            
    Dim strWriter As New StringWriter()
            
    Dim htw As New HtmlTextWriter(strWriter)
            GridView1.AllowPaging 
    = False
            GridView1.DataBind()
            GridView1.RenderControl(htw)
            Response.Write(strWriter.ToString)
            Response.End()
            GridView1.AllowPaging 
    = True
            GridView1.DataBind()
        
    End Sub

        
    Public Overrides Sub verifyRenderingInServerForm(ByVal control As Control)

        
    End Sub

    End Class

  • 相关阅读:
    js,js中使用正则表达式
    web开发中文件下载
    EL表达式
    Servlet Filter
    压缩文件 乱码问题(转载)
    MFC CopyDirectory
    SaveFileDialog
    Create Window
    CDateTimeCtrl 设置时间
    键值表
  • 原文地址:https://www.cnblogs.com/qqhfeng/p/2613014.html
Copyright © 2020-2023  润新知