Я использую iTextSharp для экспорта gridview в PDF, но у меня есть столбец, который я бы хотел включить, поскольку он содержит гиперссылку для значения. В gridview в моей программе я заменяю гиперссылку текстом «Подробности» для каждой строки при отображении. PDF-код просто не нужен. Я попробовал -iTextSharp Удалить столбец
и
grdResults.Columns(11).Visible = False
перед
Dim pdfTable As New PdfPTable(grdResults.HeaderRow.Cells.Count)
это код, я работаю с
Protected Sub grdResults_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles grdResults.RowDataBound
If (e.Row.RowType = DataControlRowType.DataRow) Then
Dim newHyperLink As New HyperLink()
newHyperLink.Text = "Details"
newHyperLink.NavigateUrl = "Details.aspx" & Server.HtmlDecode(e.Row.Cells(11).Text)
e.Row.Cells(11).Controls.Add(newHyperLink)
End If
End Sub
Protected Sub btnPDF_Click(sender As Object, e As System.EventArgs) Handles btnPDF.Click
Dim pdfTable As New PdfPTable(grdResults.HeaderRow.Cells.Count)
For Each headerCell As TableCell In grdResults.HeaderRow.Cells
Dim font As New Font()
font.Color = New BaseColor(grdResults.HeaderStyle.ForeColor)
Dim pdfCell As New PdfPCell(New Phrase(headerCell.Text, font))
pdfCell.BackgroundColor = New BaseColor(grdResults.HeaderStyle.BackColor)
pdfTable.AddCell(pdfCell)
Next
For Each gridViewRow As GridViewRow In grdResults.Rows
For Each tableCell As TableCell In gridViewRow.Cells
Dim font As New Font()
font.Color = New BaseColor(grdResults.RowStyle.ForeColor)
Dim pdfCell As New PdfPCell(New Phrase(tableCell.Text, font))
pdfCell.BackgroundColor = New BaseColor(grdResults.RowStyle.BackColor)
pdfTable.AddCell(pdfCell)
Next
Next
Dim pdfDocument As New Document(iTextSharp.text.PageSize.A4, 10.0F, 10.0F, 10.0F, 10.0F)
pdfDocument.SetPageSize(PageSize.A4.Rotate())
PdfWriter.GetInstance(pdfDocument, Response.OutputStream)
pdfDocument.Open()
pdfDocument.Add(pdfTable)
pdfDocument.Close()
Response.ContentType = "application/pdf"
Response.AppendHeader("content-disposition", "attachment, filename-results.pdf")
Response.Write(PdfDocument)
Response.Flush()
Response.End()
Update - Спасибо вам за предложения кода - с использованием исключения по индексу, который w как указано ниже, я смог удалить гиперссылку, однако столбец все еще был там, а значения ячейки сдвинуты на одну ячейку. То, что должно было стать началом второй строки, теперь стало последним значением в строке 1 и так далее. Я изменил код
Idx += 1
If Idx = 11 Then
tableCell.Text = "Details"
'Continue For
End If
Теперь помещает слово «Подробности» в столбце для каждой строки, однако в отличие от GridView и его гиперссылки этот столбец в формате PDF просто занимает пространство.
я использовал код, чтобы исключить на основе индекса, и это было удалить значение гиперссылка в этой ячейке, однако, его не удалил сам столбец. Теперь он переместил оставшиеся значения на единицу. Следующее значение строки начинается в ячейке, которая была гиперссылкой. –