Если выбран GridViewRow, то... иначе
Хорошо, похоже, это должно быть очень легко сделать, однако я не могу работать без ошибок. У меня есть оператор IfThen, в котором говорится, что если строка выбрана, а затем выполнить, в противном случае, отобразить сообщение. Код работает нормально, если я выбираю строку, однако, когда я пытаюсь продолжить работу без выбора строки, вместо сообщения, которое я хочу отобразить, появляется сообщение об ошибке. Вот пример того, что я пытаюсь сделать:
Protected Sub btnReplace(ByVal sender As Object, ByVal e As EventArgs)
Dim row As GridViewRow = device_list.SelectedRow
If (row.RowState Or DataControlRowState.Selected) > 0 Then
Message.Text = "You selected " & row.Cells(1).Text & "."
Else
Message.Text = "Please select a device."
End If
End Sub
Кто-нибудь может мне помочь с этим?
2 ответа
Как уже упоминал Мигель, свойство SelectedRow ничего не возвращает, если ни одна строка не выбрана. Итак, вы должны проверить это:
Dim row As GridViewRow = device_list.SelectedRow
If Not row Is Nothing Then
Message.Text = "You selected " & row.Cells(1).Text & "."
Else
Message.Text = "Please select a device."
End If
Вы также можете проверить, является ли SelectedIndex <> -1
If device_list.SelectedIndex <> -1 Then
Message.Text = "You selected " & device_list.SelectedRow.Cells(1).Text & "."
Else
Message.Text = "Please select a device."
End If
Если ни одна строка не выбрана, не означает ли это, что "row" будет оцениваться как Nothing, поэтому вы получите сообщение об ошибке при попытке получить его RowState, поскольку у Nothing не может быть RowStates?
Я бы проверил, если это ничего подобного:
Protected Sub btnReplace(ByVal sender As Object, ByVal e As EventArgs)
Dim row As GridViewRow = device_list.SelectedRow
If (row <> Nothing Or DataControlRowState.Selected) > 0 Then
Message.Text = "You selected " & row.Cells(1).Text & "."
Else
Message.Text = "Please select a device."
End If
End Sub