zoukankan      html  css  js  c++  java
  • VS2005中 GridView导入Excel的导入需要注意的几点

    VS2005中 GridView导入Excel的导入需要注意的几点

    1、如果出现下面的错误提示可用重载VerifyRenderingInServerForm方法解决。
    错误提示:
    类型“GridView”的控件“GridView1”必须放在具有 runat=server 的窗体标记内

    在后台文件中重载VerifyRenderingInServerForm方法,如:
    public override void VerifyRenderingInServerForm(Control control)
    {
         //base.VerifyRenderingInServerForm(control);
    }

    2、如果设置为 GetEncoding("GB2312"),导出的文件将会出现乱码。

    可用Response.ContentEncoding = System.Text.Encoding.UTF7;
    或者Encoding.UTF8等来解决,不过导入格式和字体上个人感觉UTF7比UTF8效果好些;
    因人而异了:)

    3、this.GridView1.RenderControl(oHtmlTextWriter);

    这句话提示错误:只能在执行 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" %>

    4、在gridview分页后,如果想把所有数据都生成到excel中,可以在Button1_click添加如下代码
    GridView1.AllowPaging = false;
    BindData();


    相关代码如下:

    <%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
        <title>无标题页</title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            &nbsp;
            <asp:GridView ID="GridView1" runat="server" AllowPaging="true" OnPageIndexChanging="Paging">
            </asp:GridView>
       
        </div>
            <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="导出到Excel" />
        </form>

    </body>
    </html>

    using System;
    using System.Data;
    using System.Configuration;
    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.Xml;

    public partial class _Default : System.Web.UI.Page
    {


        /**//// <summary>
        /// 重载VerifyRenderingInServerForm方法
        /// 确认在运行时为指定的 ASP.NET 服务器控件呈现 HtmlForm 控件。
        /// </summary>
        /// <param name="control">ASP.NET 服务器控件,它必须位于 HtmlForm 控件中</param>
        public override void VerifyRenderingInServerForm(Control control)
        {
            //base.VerifyRenderingInServerForm(control);
        }


        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                BindData();
            }
        }

        /**//// <summary>
        /// 绑定数据
        /// </summary>
        public void BindData()
        {
            // 查询
            string query = "SELECT * FROM jobs";
            SqlConnection myConnection = new SqlConnection("server=.;database=pubs;uid=sa;pwd=sa");
            SqlDataAdapter ad = new SqlDataAdapter(query, myConnection);
            DataSet ds = new DataSet();
            ad.Fill(ds);
            GridView1.DataSource = ds;
            GridView1.DataBind();
        }

        /**//// <summary>
        /// 内存分页
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Paging(object sender, GridViewPageEventArgs e)
        {
            GridView1.PageIndex = e.NewPageIndex;
            BindData();
        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            Response.Clear();
            Response.Buffer = true;
            Response.Charset = "GB2312";
            Response.AppendHeader("Content-Disposition", "attachment;filename=FileName.xls");
            //gaoyang [10/21/2006] 经测试如果设置为 GetEncoding("GB2312"),导出的文件将会出现乱码。
            Response.ContentEncoding = System.Text.Encoding.UTF7;

            //设置输出文件类型为excel文件。
            Response.ContentType = "application/ms-excel";
            System.IO.StringWriter oStringWriter = new System.IO.StringWriter();
            System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
            this.GridView1.RenderControl(oHtmlTextWriter);
            Response.Output.Write(oStringWriter.ToString());
            Response.Flush();
            Response.End();
        }
    }

     
  • 相关阅读:
    sqlserver获取当前id的前一条数据和后一条数据
    C#实现测量程序运行时间及cpu使用时间
    类库dll引用不成功问题
    合并相同字段
    Android之来历
    XML and JSON 验证
    特殊符号
    git 使用
    格式化字符串:金额
    grunt + sass 使用记录
  • 原文地址:https://www.cnblogs.com/wenming205/p/1234777.html
Copyright © 2011-2022 走看看