[英]VB.NET Obj Ref not set in datetime
我已經通過廣泛的“谷歌搜索”看到了類似的問題,但是沒有一個人能夠解決這個問題,我從VS13中得到的錯誤如下:
my.dll中發生類型'System.NullReferenceException'的異常,但未在用戶代碼中處理。 附加信息:對象引用未設置為對象的實例。
簡而言之,我希望在日歷文本框中填充默認的日期值,以便用戶不必選擇日期,或者如果他們忘記了諸如此類,則會花費系統時間。
我試過轉換toString等,並得到相同的錯誤。
任何幫助將不勝感激。
提前致謝。
后面的代碼:
Public Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not IsPostBack Then
Dim SrtDateTxt As New TextBox
SrtDateTxt = ListView1.FindControl("StartDateTextBox")
SrtDateTxt.Text = DateTime.Now
End If
End Sub
上面的代碼與之相關的aspx:
<asp:TextBox ID="StartDateTextBox" runat="server" Text='<%# Bind("StartDate") %>' Width="150px"/>
<act:CalendarExtender ID="CalendarExtender1" runat="server" TargetControlID="StartDateTextBox" Format="yyyy-MM-dd"></act:CalendarExtender>
首先,我想建議在項目的設置中將Option Strict
更改為“ On”。 那不能防止編譯器錯誤,但可以防止討厭的運行時錯誤。 修復編譯器錯誤將使您了解有關.NET框架中的類型的更多信息。
然后,例如,它將不再編譯:
SrtDateTxt.Text = DateTime.Now
您需要分配一個字符串而不是日期:
SrtDateTxt.Text = DateTime.Now.ToString() ' or ToShortDateString()
接下來,這不會阻止您發生NullRefernceException
:
Dim SrtDateTxt As New TextBox
如果之后再為該變量分配另一個值:
SrtDateTxt = ListView1.FindControl("StartDateTextBox")
所以我假設SrtDateTxt
為Nothing
因為在ListView
沒有該ID的ListView
但在其中一個ListViewItems
(它們是不同的NamingContainer
)。
因此,當您嘗試訪問屬性時,在下一行會出現異常
SrtDateTxt.Text = DateTime.Now ' at .Text
ListView
旨在用於多個項目。 因此,您需要使用正確的ListViewItem
。
For Each item As ListViewItem In ListView1.Items
Dim StartDateTextBox = DirectCast(item.FindControl("StartDateTextBox"), TextBox)
' ... '
Next
這將循環所有項目,我不知道這是否是您想要的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.