如果选择了 GridViewRow 则...否则

Posted

技术标签:

【中文标题】如果选择了 GridViewRow 则...否则【英文标题】:If GridViewRow is Selected Then ... Else 【发布时间】:2010-12-23 00:22:41 【问题描述】:

好的,这看起来应该很容易做到,但是我似乎无法在不出错的情况下工作。我有一个 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

谁能帮我解决这个问题?

【问题讨论】:

【参考方案1】:

正如 Miguel 已经提到的,当没有选择任何行时,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

【讨论】:

【参考方案2】:

如果没有选择行,这是否意味着“行”将评估为 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

【讨论】:

以上是关于如果选择了 GridViewRow 则...否则的主要内容,如果未能解决你的问题,请参考以下文章

SQL:单个人存在多个地址。如果存在则选择当前地址,否则选择永久地址

如果配置存在则选择第一行,否则选择 NULL Row

如果条件满足则选择 A 行,否则为每个组选择 B 行

如果存在则从表中选择,否则从oracle中的另一个表中选择

通过在 where 子句中传递值来选择数据,如果值匹配则返回该数据,否则返回所有数据

棋盘变幻