2012-06-22 3 views
0

У меня есть GridView, который программно заполняется из БД (а не SqlDataSource или такой). Есть 4 столбца, которые являются TemplateFields, когда я форматирую их текст. Они даты и времени, и это один из их TemplateField:Преобразование шаблона шаблона gridview в pdf iTextSharp

<ItemTemplate> 
    <asp:Label ID="Label1" Text='<%# FormatDate(Eval("tDate")) %>' runat="server"></asp:Label> 
</ItemTemplate> 

Это функция для форматирования этой даты:

Function FormatDate(objTime As Object) As String 
    Dim d As String 
    If objTime.Equals(DBNull.Value) Then 
     d = "" 
    Else 
     d = Convert.ToDateTime(objTime).ToString("MM-dd-yyyy") 
    End If 
    Return d 
End Function 

Я использую метод, описанный в этой Post, который был преобразован на код VB от this для преобразования GridView в PDF с помощью iTextSharp.

Моя проблема заключается в том, что я получаю Null Reference исключение здесь при добавлении GridView данных в формат PDF (внутри Для Loops):

Dim lc As DataBoundLiteralControl = TryCast(gvReport.Rows(rowNo).Cells(colNo).Controls(0), DataBoundLiteralControl) 
s = lc.Text.Trim() 

И если я удалю это заявление, если и только запустить Остальная часть здесь:

s = gvReport.Rows(rowNo).Cells(colNo).Text.Trim() 
ph = New Phrase(s, FontFactory.GetFont("Arial", ReportTextSize, iTextSharp.text.Font.NORMAL)) 
mainTable.AddCell(ph) 

Эти столбцы «Дата/Время» отображаются как пустые в PDF, а все остальные столбцы отображаются без проблем.

Я очень потерял, как решить эту проблему, и не удалось найти решение в Интернете.

ответ

0

В то время как я был не в состоянии исправить решение, которое я следовал вверх выше, я нашел другой способ доступа к данным из TemplateField:

Dim s As String = CType(gvReport.Rows(rowNo).FindControl("Label1"), Label).Text 

Это дает мне доступ к данным в указанном столбце , Теперь мне просто нужно выяснить способ перебора строки и получить каждый из разных шаблонов TemplateFields, которые, вероятно, будут включать в себя обработку моих циклов For и оператора Select Case.

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