0

私は次のコードを持っています...

 Protected Sub GridView1_RowUpdating(ByVal sender As Object, ByVal e As EventArgs) Handles GridView1.RowUpdating
     Dim SocioNumInfo As Integer = CInt(GridView1.Rows(GridView1.SelectedIndex).Cells(4).Text)
     MsgBox(SocioNumInfo.ToString)
     ...
 End Sub

これで、このコードはセルを読み取る必要がありますが、次のエラーが発生します。

インデックスが範囲外でした。負ではなく、コレクションのサイズよりも小さい必要があります。パラメータ名:インデックス

MsgBoxは、データが読み取られているかどうかを確認するためのものです。1日の終わりに、データをパラメーターに変換して、DBに追加できるようにする必要があります...しかし、それでも..何もありません。選択した行のセルから直接読み取る正しいコードですか?「ProtectedSub」エリアでは、SelectedIndexChangingやRowEditingなどを試しましたが、まだ何もありません。それでも私にエラーを投げます。

試し Dim SocioNumInfo As String = CStr(GridView1.Rows(GridView1.SelectedRow).Cells(4).Text)てみると、「整数に変換できません」というエラーが表示されます。

4

1 に答える 1

0

行が選択されていない場合は、GridView1.SelectedIndexです-1。チェックを追加する必要があるかもしれません

If GridView1.SelectedIndex <> -1 Then
    ' Use GridView1.SelectedIndex here
End If

ただし、次のように選択した行にアクセスする方が簡単です。

Dim row = GridView1.SelectedRow
If Not row Is Nothing AndAlso IsNumeric(row.Cells(2).Text) Then
    Dim SocioNumInfo As Integer = CInt(row.Cells(2).Text)
    ....        
End If

セルインデックスはゼロベースであることに注意してください。row.Cells(4)5列目にあります。

于 2013-03-26T19:31:50.033 に答える