#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"%>