簡體   English   中英

VB.NET對象參考未在日期時間設置

[英]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")

所以我假設SrtDateTxtNothing因為在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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM