• VSc# web程序:gridview保存Excel文件遇到的问题


    1。Gridview1必须放在具有runat=server的窗体标记内

    解决方法:在程序相应位置加上以下代码中绿色部分代码即可。

    //按钮点击事件 

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

                Response.Buffer = true;
                Response.Charset = "GB2312"; //设置了类型为中文防止乱码的出现
                Response.AppendHeader("Content-Disposition", "attachment;filename=" + TextBox1.Text + ".xls"); //定义输出文件和文件名
                Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");//设置输出流为简体中文
                Response.ContentType = "application/ms-excel";//设置输出文件类型为excel文件。
                this.EnableViewState = false;
                System.Globalization.CultureInfo myCItrad = new System.Globalization.CultureInfo("ZH-CN", true);
                System.IO.StringWriter oStringWriter = new System.IO.StringWriter(myCItrad);
                System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter); 
                this.GridView1.RenderControl(oHtmlTextWriter); 
                Response.Write(oStringWriter.ToString());       
        } 

        bool DownloadExcelFlag = false;

        public override void RenderControl(HtmlTextWriter writer)
        {
            if (DownloadExcelFlag)
                this.GridView1.RenderControl(writer);  //仅仅输出GridView1
            else
                base.RenderControl(writer);
        }

        public override void VerifyRenderingInServerForm(Control control)
        {
            if (!DownloadExcelFlag)
                base.VerifyRenderingInServerForm(control);
        } 
     

    2.若加上以上部分还不能正常运行,并提示如下错误:

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

    解决方法:

        EnableEventValidation属性是 .NET Framework 2.0 中是新增的属性,默认的情况下该属性的值为true;通过这个新增的功能ASP.NET会检查 POST方法中的所带的参数,如果认为不合法,就会抛出异常。这个设计的目的是为了防止恶意用户利用post 方法发送一些恶意数据,但是有时也会出现类似上面的错误。

    只要禁止这个功能,问题就能得到解决。可以通过以下两种途径解决:
    1、在Web.Config文件中:在<system.web></system.web>标记中添加如下代码:
    <system.web>
          <pages enableEventValidation="false"> </pages>
    </system.web>
    2、在具体的.aspx页面的源代码中修改代码,如下:
    <%@ Page Language="C#" EnableEventValidation="false" AutoEventWireup="true" CodeFile="GridView_Export_Excel.aspx.cs" Inherits="GridView_Export_Excel" %>

  • 相关阅读:
    JUC原子类 1
    线程优先级和守护线程
    多线程中断
    关于html5不支持frameset的解决方法
    shell中$0,$?,$!等的特殊用法
    Linux GCC常用命令
    C/C++中extern关键字详解
    js实现iframe自适应高度
    java线程安全总结
    Linux平台Java调用so库-JNI使用例子
  • 原文地址:https://www.cnblogs.com/liuzhixian/p/1457003.html
Copyright © 2020-2023  润新知