DBからプログラムで埋められたGridViewがあります(SqlDataSourceなどではありません)。テキストの書式を設定すると、TemplateFields である 4 つの列があります。それらは日付と時刻であり、これはそれらの TemplateField の 1 つです。
<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
iTextSharp を使用して GridView を PDF に変換するために、これからVB コードに変換されたこの投稿のメソッドを使用しています。
私の問題は、GridView データを PDF (For ループ内) に追加するときに、ここで Null 参照例外が発生することです。
Dim lc As DataBoundLiteralControl = TryCast(gvReport.Rows(rowNo).Cells(colNo).Controls(0), DataBoundLiteralControl)
s = lc.Text.Trim()
この If ステートメントを削除して、ここで Else 部分を実行すると、次のようになります。
s = gvReport.Rows(rowNo).Cells(colNo).Text.Trim()
ph = New Phrase(s, FontFactory.GetFont("Arial", ReportTextSize, iTextSharp.text.Font.NORMAL))
mainTable.AddCell(ph)
これらの日付/時刻列は PDF では空として表示されますが、他のすべての列は問題なく表示されます。
この問題を解決する方法に非常に迷っており、オンラインで解決策を見つけることができませんでした。