0

わかりました。これは非常に簡単なことのようですが、エラーが発生しないと作業できないようです。行が選択されているかどうかを示す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

誰かがこれで私を助けることができますか?

4

2 に答える 2

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
于 2010-12-23T00:44:53.120 に答える
0

行が選択されていない場合、「行」はNothingと評価されるという意味ではありません。したがって、RowStateを取得しようとするとエラーが発生します。これは、NothingがRowStateを持つことができないためです。

私はそれがこのようなものではないかどうかを確認します:

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
于 2010-12-23T00:25:39.807 に答える