У вас есть несколько вещей, которые нужно проверить:
1) Убедитесь, что drCurrentRow IsNot Nothing
, прежде чем пытаться получить доступ к его значениям.
2) Если drCurrentRow действителен, убедитесь, что он содержит столбецвызвал contact_email до его обработки.Например:
If drCurrentRow.Row.Table.Columns.Contains("contact_email") Then
3) Если столбец существует, вам необходимо проверить содержимое элемента на предмет «Ничего» и / или DBNull.Value на эквивалентность, прежде чем пытаться выполнить операции со значением.Например:
If Not drCurrentRow.IsNull("contact_email") Then
Итак, часть вашего кода будет переписана следующим образом:
Public Function GetRowStringValue(oRowView As DataRowView, sColumnName As String) As String
If oRowView IsNot Nothing Then
If oRowView.Row.Table.Columns.Contains(sColumnName) Then
If Not oRowView.IsNull(sColumnName) Then
Return oRowView(sColumnName).ToString.Trim
End If
End If
End If
End Function
Select Case e.CommandName
Case "Email"
Dim strEmailAddress As String = GetRowStringValue(drCurrentRow, "contact_email")
Dim strUserName As String = GetRowStringValue(drCurrentRow, "login")
Dim strUserID As String = GetRowStringValue(drCurrentRow, "username")
Dim strPassword As String = GetRowStringValue(drCurrentRow, "password")