处理DatePicker中的空引用

时间:2014-02-14 10:56:52

标签: asp.net vb.net telerik

我遇到以下错误:

  

System.NullReferenceException:未将对象引用设置为对象的实例。

我的编码是:

If (DirectCast(drv.Cells(4).FindControl("rdp_clsDate"), RadDatePicker).DbSelectedDate).ToString <> "" Then
    Dim ClsDate As Date = DirectCast(drv.Cells(4).FindControl("rdp_clsDate"), RadDatePicker).DbSelectedDate
    aa_ml.closeDate = ClsDate.ToString("dd/MM/yyyy")
Else
    aa_ml.closeDate = ""
End If

此处CloseDate不是强制性的。所以我可能会给予或者我可能不给予。当我给出关闭日期时代码正常工作并且记录存储在表格中。但是当我没有给出结束日期时,我无法执行该程序。调试时,执行将在此行停止

If (DirectCast(drv.Cells(4).FindControl("rdp_clsDate"), RadDatePicker).DbSelectedDate).ToString <> "" Then

我得到了上述错误。

如果我不提供closedate

,如何更改代码以处理这种情况

我使用oracle作为后端。

2 个答案:

答案 0 :(得分:2)

如果您的日期选择器中未选择日期,则您在ToString()上呼叫DbSelectedDate这是一个空字段。

将其拆分为两行,并在运行ToString()

之前添加一个null检查

答案 1 :(得分:1)

在将RadDatePicker.DbSelectedDate Property转换为字符串之前,您需要先检查{{3}}是否为Nothing。试试这段代码

Dim rdp_clsDate As RadDatePicker = DirectCast(drv.Cells(4).FindControl("rdp_clsDate"), RadDatePicker)
If rdp_clsDate.DbSelectedDate IsNot Nothing AndAlso rdp_clsDate.DbSelectedDate.ToString() <> "" Then
    Dim ClsDate As Date = rdp_clsDate.DbSelectedDate
    aa_ml.closeDate = ClsDate.ToString("dd/MM/yyyy")
Else
    aa_ml.closeDate = ""
End If