将gridview导出为PDF时,超链接字段为空

时间:2014-11-05 07:50:01

标签: c# asp.net pdf gridview hyperlink

我在ASP.NET工作。我有一个gridview,其中有两列是hyperlinks(其他列是regulardatafield)。 他们看起来像那样:

 <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。 除了那两个空的列外,一切都很完美。

这里要求的

EDIT 是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();
}
你能帮我解决一下这个问题吗? 提前谢谢。

1 个答案:

答案 0 :(得分:0)

属性Text不能用于ItemTemplate。您应该对以下列使用以下代码:

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