2011-12-09 41 views
0

這裏對.Net相當陌生,並且遇到了一行代碼。我有一個自定義類中的例程,它根據表格行中的數據爲對象分配值。但是,可以使用多個表來更新這些值,並且只有一些共同的字段。因此,我希望檢查每個字段值,以確保它存在,然後再嘗試訪問它的值以分配給我的對象。但是,我收到錯誤「列x不屬於表」。有關我如何能夠在不拋出錯誤的情況下完成此任務的任何建議?列不屬於VB .NET中的表錯誤

 'error occurs on first line 
     If Not memberRow.Item("nickname") Is Nothing Then 
      returnval.NickName = Trim(memberRow.Item("nickname").ToString) 
     End If 

回答

1

如果該列不存在,則Item方法將引發異常。

也許最簡單的解決方法是:

Dim wIndex As Integer 

wIndex = memberRow.Table.Columns.IndexOf("nickname") 
If wIndex <> -1 Then 
    returnval.NickName = Trim(memberRow.Item(wIndex).ToString) 
Else 
    returnval.NickName = String.Empty 
End IF 
+0

這不起作用,因爲我使用的是DataRow而不是DataSet,並且看起來不像DataRow的等效屬性來檢查這種方式。 – unclesol

+0

對不起,在答案中有一個輕微的錯字:它應該是memberRow.Table not .Tables。 –

+0

啊 - 那就是訣竅。非常感謝! – unclesol

1

假設memberRow是類型System.Data.DataRow你會想看看錶的定義。喜歡的東西:

If (memberRow.Table.Columns.Contains("nickname")) Then 
    If Not memberRow.Item("nickname") Is Nothing Then 
      returnval.NickName = Trim(memberRow.Item("nickname").ToString) 
     End If 
End If 

你也可以做@competent_tech建議和陷阱例外,但是這取決於你落在slow/not-slow exception辯論的哪一側。