如果选择了 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:单个人存在多个地址。如果存在则选择当前地址,否则选择永久地址