2010-12-23 55 views
0

好吧,这看起来应该很容易做到,但是我似乎无法在没有出错的情况下工作。我有一个IfThen语句,指出是否选择了一行,然后执行,否则显示消息。如果我选择一行,代码运行良好,但是当我尝试继续而没有选择行时,我得到一个错误,而不是我想要显示的消息。这里是我想要做的一个例子:如果GridViewRow被选中然后...否则

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 

任何人都可以帮我解决这个问题吗?

回答

1

由于米格尔已经提到的,没有选定的行,当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 
+0

完美。谢谢! – Kevin 2010-12-23 00:47:29

0

如果未选择任何行,那并不意味着“行”将评估为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 
相关问题