Datagrid行没有被读取代码

时间:2013-03-26 18:50:30

标签: asp.net vb.net

我有以下代码......

 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)它给了我一个“无法转换为整数”的错误。

1 个答案:

答案 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列。