aspx 通用的GridView 导出 Excel--保存或打开

来源:互联网 发布:linux部署snmp 编辑:程序博客网 时间:2024/04/30 15:06

#region Excel 输出    protected void btnExcel_Click(object sender, ImageClickEventArgs e)    {        this.GridView1.Visible = true;        PrepareGridViewForExport(GridView1);        string attachment = "attachment; filename=download.xls";        Response.ClearContent();        Response.AddHeader("content-disposition", attachment);        Response.ContentType = "application/ms-excel";        StringWriter sw = new StringWriter();        HtmlTextWriter htw = new HtmlTextWriter(sw);        GridView1.RenderControl(htw);        Response.Write(sw.ToString());        Response.End();        GridView1.Visible = false;    }

    public override void VerifyRenderingInServerForm(System.Web.UI.Control control)    {    }

    private void PrepareGridViewForExport(System.Web.UI.Control gv)    {        LinkButton lb = new LinkButton();        Literal l = new Literal();        string name = String.Empty;        for (int i = 0; i < gv.Controls.Count; i++)        {

            if (gv.Controls[i].GetType() == typeof(LinkButton))            {

                l.Text = (gv.Controls[i] as LinkButton).Text;

                gv.Controls.Remove(gv.Controls[i]);

                gv.Controls.AddAt(i, l);

            }

            else if (gv.Controls[i].GetType() == typeof(DropDownList))            {

                l.Text = (gv.Controls[i] as DropDownList).SelectedItem.Text;

                gv.Controls.Remove(gv.Controls[i]);

                gv.Controls.AddAt(i, l);

            }

            else if (gv.Controls[i].GetType() == typeof(System.Web.UI.WebControls.CheckBox))            {

                l.Text = (gv.Controls[i] as System.Web.UI.WebControls.CheckBox).Checked ? "True" : "False";

                gv.Controls.Remove(gv.Controls[i]);

                gv.Controls.AddAt(i, l);

            }

            if (gv.Controls[i].HasControls())            {

                PrepareGridViewForExport(gv.Controls[i]);

            }

        }

    }    #endregion

 

注:

设计源代码部分 加上 EnableEventValidation="false"

如:<%@ Page Language="C#" MasterPageFile="~/Admin/Admin.master" AutoEventWireup="true" CodeFile="QueryResource.aspx.cs" Inherits="Admin_QueryResource" Title="Untitled Page" EnableEventValidation="false"%>

原创粉丝点击