2016-01-14 2 views
0

Я использую 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 просто занимает пространство.

ответ

0

Вы должны уметь просто исключить его петлю For Each. Continue For пропустит остальную часть текущего кода For и перейдем к следующему элементу коллекции.

For Each tableCell As TableCell In gridViewRow.Cells 

    ''//Exclude based on ID 
    If tableCell.ID = "Your ID" Then 
     Continue For 
    End If 

    ''//Exclude based on header ID 
    If tableCell.AssociatedHeaderCellID.Contains("Your Header ID") Then 
     Continue For 
    End If 

    ''//Exclude based on visibility 
    If Not tableCell.Visible Then 
     Continue For 
    End If 
Next 

И если это не работает, вы можете просто исключите на основе индекса:

For Each gridViewRow As GridViewRow In grdResults.Rows 
    ''//Reset the counter on each inner for 
    Dim Idx = -1 
    For Each tableCell As TableCell In gridViewRow.Cells 
     //Increment our counter 
     Idx += 1 

     ''//Exclude based on index 
     If Idx = 11 Then 
      Continue For 
     End If 
    Next 

Next 
+0

я использовал код, чтобы исключить на основе индекса, и это было удалить значение гиперссылка в этой ячейке, однако, его не удалил сам столбец. Теперь он переместил оставшиеся значения на единицу. Следующее значение строки начинается в ячейке, которая была гиперссылкой. –

Смежные вопросы