当前位置: 代码迷 >> ASP.NET >> 在gridview导出为excel时,怎么不导出HyperLinkField
  详细解决方案

在gridview导出为excel时,怎么不导出HyperLinkField

热度:3155   发布时间:2013-02-25 00:00:00.0
在gridview导出为excel时,如何不导出HyperLinkField?
在gridview导出为excel时,如何不导出HyperLinkField?

gridview中有一个HyperLinkField,如何在导出excel时,不导出,
主要导出方法:
  StringWriter sw = new StringWriter();
  HtmlTextWriter hw = new HtmlTextWriter(sw);
  GridView1.RenderControl(hw);
  Response.Write(sw.ToString());
  Response.End();

------解决方案--------------------------------------------------------
导出的datagridview可以和显示的不同,用另一个,当导出时绑定上数据,并且不放HyperLinkField,只放数据。
弹出窗口给HyperLinkField加个属性,用onclick,用js实现.

------解决方案--------------------------------------------------------
例子
HTML code
<%@ Page Language="C#" Debug="true" %><%@ Import Namespace="System.Xml" %><%@ Import Namespace="System.Data" %><%@ Import Namespace="System.Data.OleDb" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><script runat="server">  public bool isExport = false;  private System.Data.DataTable GetData()  {    System.Data.DataTable dt = new System.Data.DataTable();    System.Data.DataRow dr;    dt.Columns.Add(new System.Data.DataColumn("学生班级", typeof(System.String)));    dt.Columns.Add(new System.Data.DataColumn("学生姓名", typeof(System.String)));    dt.Columns.Add(new System.Data.DataColumn("语文", typeof(System.Decimal)));    System.Random rd = new System.Random();    for (int i = 0; i < 8; i++)    {      dr = dt.NewRow();      dr[0] = "班级" + i.ToString();      dr[1] = "【孟子E章】" + i.ToString();      dr[2] = System.Math.Round(rd.NextDouble() * 100, 0);      dt.Rows.Add(dr);    }    return dt;  }  protected void Page_Load(object sender, EventArgs e)  {        if (!Page.IsPostBack)    {      GridView1.DataSource = GetData();      GridView1.DataBind();    }  }  protected void Button1_Click(object sender, EventArgs e)  {    isExport = true;       Response.Clear();    Response.Buffer = true;    Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");    Response.AppendHeader("Content-Disposition", "attachment;filename=FileName.xls");    Response.ContentType = "application/ms-excel";//设置输出文件类型为excel文件。     System.IO.StringWriter oStringWriter = new System.IO.StringWriter();    System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);    GridView1.DataSource = GetData();    GridView1.DataBind();    this.GridView1.RenderControl(oHtmlTextWriter);    Response.Output.Write(oStringWriter.ToString());    Response.Flush();    Response.End();  }  public override void VerifyRenderingInServerForm(Control control) { }  protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)  {    if (isExport)    {      e.Row.Cells[1].Visible = false;    }    else    {      if (e.Row.RowType == DataControlRowType.DataRow)      {        HyperLink x = e.Row.Cells[1].Controls[0] as HyperLink;        x.Attributes.Add("onclick", "window.open('','_xx','width=200,height=300,left=200');");        x.Target = "_xx";      }    }  }</script><html xmlns="http://www.w3.org/1999/xhtml"><head id="Head1" runat="server"></head><body>  <form id="form1" runat="server">  <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" OnRowDataBound="GridView1_RowDataBound">    <Columns>      <asp:BoundField DataField="学生班级" />      <asp:HyperLinkField DataNavigateUrlFields="学生班级" DataTextField="学生姓名" DataNavigateUrlFormatString="xx.aspx?id={0}" />    </Columns>  </asp:GridView>  <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" />  </form></body></html>
  相关解决方案