我在aspx页面中有一个GridView,我在比较两个日期并根据结果格式化它们。这似乎工作正常,除非有我的Null日期或空白单元格导致页面崩溃和visual studio返回此错误
mscorlib.dll中发生了'System.FormatException'类型的异常 但未在用户代码中处理。附加信息:字符串是 未被识别为有效的DateTime。
这是我收到错误的地方:
Dim startdate As DateTime = Convert.ToDateTime(e.Row.Cells(7).Text)
这是我的VB.Net代码:
Protected Sub GridView1_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView1.RowDataBound
If e.Row.RowType = DataControlRowType.DataRow Then
Dim duedate As DateTime = Convert.ToDateTime(e.Row.Cells(11).Text)
Dim startdate As DateTime = Convert.ToDateTime(e.Row.Cells(7).Text) '*THIS IS WHERE I HAVE NULL OR BLANK DATES
Dim today As DateTime = DateTime.Now
If startdate > duedate Then
e.Row.Cells(2).BackColor = System.Drawing.Color.Red
e.Row.Cells(2).CssClass = "gvhlrow"
ElseIf startdate.AddDays(7) < duedate Then
e.Row.Cells(2).BackColor = System.Drawing.Color.Yellow
e.Row.Cells(2).CssClass = "gvhlrow"
ElseIf startdate.AddDays(14) < duedate Then
e.Row.Cells(2).BackColor = System.Drawing.Color.Lime
e.Row.Cells(2).CssClass = "gvhlrow"
ElseIf startdate < duedate Then
e.Row.Cells(2).BackColor = System.Drawing.Color.Orange
e.Row.Cells(2).CssClass = "gvhlrow"
End If
End If
End Sub
答案 0 :(得分:0)
您必须使用以下内容检查输入:
Dim startdate As DateTime
If Not DateTime.TryParse(e.Row.Cells(7).Text, startdate) Then
' Display an error, set a meaningful default value or just return.
End If
也许您希望在日期无效的情况下向用户显示错误消息,可能您想忽略它并使用某个默认值,或者如果没有有意义的默认值,那么您可能只想返回任何计算。
我建议以类似的方式检查duedate
无效值。