2016-01-14 2 views
1

Я использую iTextSharp для создания pdf-файла из gridview. Когда в таблице есть нулевое значение, pdf помещает вместо него & nbsp. Как удалить это и показать нулевое значение? Я знаю, что pdf создается после того, как gridview уже заполнен, но есть ли способ сказать, что нули должны отображаться как пробелы? Мой код выглядит следующим образом:itextSharp null value show & nbsp

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() 

End Sub 
+0

Вы буквально видите объект, похожий на HTML, '& nbsp' или вы просто видите пробелы? Кроме того, не связанный с вашей проблемой, но удалите строку 'Response.Write (PdfDocument)', потому что она не делает то, что вы думаете, что она делает. Эта строка на самом деле вызывает 'ToString()' на 'pdfDocument', но этот объект не имеет строкового представления, поэтому вы получаете ненужные данные. Он работает 99% времени, но иногда вы получите поврежденный PDF-файл, если будете продолжать это делать. –

+0

Я буквально получаю «& nbsp» в поле ячейки, когда значение пустое в gridview. –

ответ

0

Значения, которые я получала & NBSP в PDF пришел из вычисляемых полей. Когда не было значения для вычисления, он ничего не помещал бы в ячейку gridview, поэтому, в свою очередь, он помещал бы пустое значение в pdf. Я вернулся к вычислениям, и если значение не было определено, чем я разместил пространство для значения. Например,

 If dtRaw.Rows(0).Item("ParameterName").ToString() <> "NOY" Then 
      drCalcRow("NAAQGreater") = iNAAQS 
      drCalcRow("NAAQGreater80") = iNAAQS80 
     Else 
      drCalcRow("NAAQGreater") = " " 
      drCalcRow("NAAQGreater80") = " " 
     End If 

Он работает, однако он многое добавляет коду. Было бы неплохо иметь что-то одно время, которое будет проверять, когда оно пеет через строки, когда он пишет pdf. Я пробовал пару вещей, но ничего не работало или даже не повлияло.

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

  • Нет связанных вопросов^_^