2014-11-05 76 views
0

我在ASP.NET中工作。我有一个gridview,它的列2 hyperlinks(其余为regulardatafield)。 他们看起来像:将gridview导出为PDF时超链接字段为空

<asp:TemplateField HeaderText="Costumer"> 
      <ItemTemplate> 
       <asp:HyperLink ID="HyperLink1" runat="server" 
        NavigateUrl='<%# Eval("CUSTOMER_ID", "javascript:void(window.open(&#039;CustSubsDetailsPage.aspx?CUSTOMER_ID={0}&#039;,&#039;&#039;,&#039; width=500, height=500, top=100, left=100&#039;))") %>' 
        Text='<%# Eval("CUSTOMER_ID") %>'></asp:HyperLink> 
      </ItemTemplate> 
     </asp:TemplateField> 

在CS代码我只使用数据绑定,然后导出到pdf。 一切工作正常,除了那些空的2列。

编辑这里要求是PDF文件中的代码:

protected void btnExportPDF_Click(object sender, EventArgs e) 
{ 
    GridView.AllowPaging = false; 
    GridView.DataBind(); 

    iTextSharp.text.pdf.PdfPTable table = new iTextSharp.text.pdf.PdfPTable(GridView.Columns.Count); 
    table.WidthPercentage = 90; 
    table.RunDirection = PdfWriter.RUN_DIRECTION_RTL; 

    for (int i = 0; i < GridView.Columns.Count; i++) 
    { 
     string cellText = headers[i]; 
     BaseFont bf = BaseFont.CreateFont("C:\\Windows\\Fonts\\Arial.ttf", BaseFont.IDENTITY_H, BaseFont.EMBEDDED); 
     iTextSharp.text.Font font = new iTextSharp.text.Font(bf, 6, iTextSharp.text.Font.NORMAL, BaseColor.BLACK); 
     iTextSharp.text.pdf.PdfPCell cell = new iTextSharp.text.pdf.PdfPCell(new Phrase(8, cellText, font)); 
     table.AddCell(cell); 
    } 
    for (int i = 0; i < GridView.Rows.Count; i++) 
    { 
     if (GridView.Rows[i].RowType == DataControlRowType.DataRow) 
     { 
      for (int j = 0; j < GridView.Columns.Count; j++) 
      { 
       string cellText = Server.HtmlDecode(GridView.Rows[i].Cells[j].Text); 
       BaseFont bf = BaseFont.CreateFont("C:\\Windows\\Fonts\\Arial.ttf", BaseFont.IDENTITY_H, BaseFont.EMBEDDED); 
       iTextSharp.text.Font font = new iTextSharp.text.Font(bf, 6, iTextSharp.text.Font.NORMAL, BaseColor.BLACK); 
       iTextSharp.text.pdf.PdfPCell cell = new iTextSharp.text.pdf.PdfPCell(new Phrase(8, cellText, font)); 
       table.AddCell(cell); 
      } 
     } 
    } 

    Document pdfDoc = new Document(PageSize.A4_LANDSCAPE, 10f, 10f, 10f, 0f); 
    PdfWriter.GetInstance(pdfDoc, Response.OutputStream); 
    pdfDoc.Open(); 
    pdfDoc.Add(table); 
    pdfDoc.Close(); 
    Response.ContentType = "application/pdf"; 
    Response.AddHeader("content-disposition", "attachment;" + "filename=Dlf_Log_report_" + DateTime.Now + ".pdf"); 
    Response.Cache.SetCacheability(HttpCacheability.NoCache); 
    Response.Write(pdfDoc); 
    Response.End(); 
} 

能否请你帮我找出这个问题? 在此先感谢。

+0

如何将'GridView'导出为PDF?你能提供解决方案的源代码吗? – 2014-11-05 09:03:38

+0

@PavelTimoshenko我已经添加了代码 – user3710346 2014-11-05 10:49:30

回答

0

属性Text不能用于ItemTemplate。你应该对这样的列使用以下代码:

string cellText = Server.HtmlDecode((GridView.Rows[i].Cells[j].FindControl("hyperLinkId") as HyperLink).NavigateUrl); 
+0

谢谢!工作! – user3710346 2014-11-06 08:18:54

+0

我很高兴能帮上忙。不要忘记标记回答的问题。 – 2014-11-06 09:23:29