我有以下代码......
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
现在,此代码应该读取单元格,但它给出了以下错误:
指数超出范围。必须是非负数且小于集合的大小。 参数名称:index
MsgBox就在那里,我可以检查数据是否正在被读取,在一天结束时它应该将其转换为参数,这样我就可以添加到数据库......但仍然没有。这是直接从选择行中的单元格读取的正确代码吗?在“Protected Sub”区域,我已经尝试过SelectedIndexChanging和RowEditing等等......但仍然没有。仍然向我抛出错误。
如果我试试
Dim SocioNumInfo As String = CStr(GridView1.Rows(GridView1.SelectedRow).Cells(4).Text)
它给了我一个“无法转换为整数”的错误。
答案 0 :(得分: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列。