我在ASP.NET工作。我有一个gridview
,其中有两列是hyperlinks
(其他列是regulardatafield
)。
他们看起来像那样:
<asp:TemplateField HeaderText="Costumer">
<ItemTemplate>
<asp:HyperLink ID="HyperLink1" runat="server"
NavigateUrl='<%# Eval("CUSTOMER_ID", "javascript:void(window.open('CustSubsDetailsPage.aspx?CUSTOMER_ID={0}','',' width=500, height=500, top=100, left=100'))") %>'
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();
}
你能帮我解决一下这个问题吗?
提前谢谢。
答案 0 :(得分:0)
属性Text
不能用于ItemTemplate
。您应该对以下列使用以下代码:
string cellText = Server.HtmlDecode((GridView.Rows[i].Cells[j].FindControl("hyperLinkId") as HyperLink).NavigateUrl);