2013-06-26 20 views
0

我找不到完整的示例。在網格和組合框中發現噸,但不是文本框。這個測試是從TypePhoneCode =「0」的UserPhoneType表中查找「PhoneTypeName」,並將第一個值賦給一個asp.net文本框。固定 - 在使用Telerik後面的代碼中簡單綁定值到文本框OpenAccess

目前,我得到「未將對象引用設置到對象的實例」當設置文本框「phonetype.FirstOrDefault.PhoneTypeName.ToString」

Using dbContext As New EntitiesModel() 
    Dim phonetype As IEnumerable(Of User_PhoneType) = dbContext.User_PhoneTypes.Where(Function(c) c.PhoneTypeCode = "O") 
    mytextbox.Text = phonetype.FirstOrDefault.PhoneTypeName.ToString 
End Using 

---- EDIT-- -

我改變建議。我也成功地將整個PhoneType列表綁定到一個droplist控件...以確認數據是可訪問的。這一定是我在這裏查詢單個記錄的方式。

我得到相同的錯誤,但在「Dim type = phonetype.First ...」 該記錄在表中,但它似乎沒有用我的代碼提取。

Dim phonetype As IEnumerable(Of User_PhoneType) = dbContext1.User_PhoneTypes.Where(Function(c) c.PhoneTypeCode = "M") 
Dim type = phonetype.FirstOrDefault 
If Object.ReferenceEquals(type, Nothing) = False And Object.ReferenceEquals(type.PhoneTypeName, Nothing) = False Then 
    mytextbox.Text = type.PhoneTypeName.ToString 
End If 

回答

0

修復它。

我能夠查看使用此生成的SQL字符串: mytextbox.text = phonetype.tostring

我看到SQL載 「NULL = 'O'」

我做到了喜歡這個例子?!?但是,當我將.ToString添加到被查詢的字段時,它工作。

所以最後是這樣的:

Using dbContext As New EntitiesModel() 
    Dim phonetype As IEnumerable(Of User_PhoneType) = dbContext.User_PhoneTypes.Where(Function(c) c.PhoneTypeCode.**ToString** = "O") 
    mytextbox.Text = phonetype.FirstOrDefault.PhoneTypeName.ToString 
End Using 

BTW,貝爾巴托夫點檢查空第一是很好的建議(+1)。他說的價值不算什麼。

2

一般有以下獲得此異常可能有兩個原因:

1)PHONETYPE列表是空的,FirstOrDefault方法返回一個沒有價值。

2)PHONETYPE列表的第一個元素的PhoneTypeName酒店有沒有什麼價值。

爲了確保您不會將對象引用設置爲對象的實例異常,我建議您在設置TextBox值之前添加對Nothing的檢查。它可能類似於下面的那個:

Dim type = phonetype.FirstOrDefault 
If Object.ReferenceEquals(type, Nothing) = False And Object.ReferenceEquals(type.PhoneTypeName, Nothing) = False Then 
    mytextbox.Text = type.PhoneTypeName.ToString 
End If 
相關問題