指数超出范围。必须是非负数且小于集合的大小

时间:2012-06-08 18:08:00

标签: asp.net vb.net

我有RowDatabound事件,我想更改这样的列名:

 Protected Sub gvKeyValueOfstringstring_RowDataBound(sender As Object, e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles gvKeyValueOfstringstring.RowDataBound
        If e.Row.RowType = DataControlRowType.Header Then

            gvKeyValueOfstringstring.Columns(0).HeaderText = "Match"
            gvKeyValueOfstringstring.Columns(1).HeaderText = "Replace"
        End If
    End Sub

但我错了:

指数超出范围。必须是非负数且小于集合的大小。 参数名称:index

2 个答案:

答案 0 :(得分:0)

可能gvKeyValueOfstringstring.Columns的长度小于2,因此当您访问索引为0或1的列时,它会失败。

在执行该代码之前检查是否正在成功创建列。

另外,我认为你不需要在RowDataBound事件中执行它,它可能在Page_Load中(因此如果它是标题,你不必检查每一行)。如果你想在那里做,也许你可以只改变那行的单元格的值:

e.Row.Cells(0).Text = "Match"
e.Row.Cells(1).Text = "Replace"

无论如何,如果没有正确创建列,我希望这段代码也会失败。

答案 1 :(得分:0)

Private Sub BttnCan_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BttnCan.Click
        Dim val1 As Integer
        Try
            con.Open()
            For i As Integer = 0 To DataGridView1.Rows.Count
                val1 = Me.DataGridView1.Rows(i).Cells(2).Value

                com.CommandText = "INSERT INTO TblStock (Quant) VALUES (" & val1 & ")"

            Next

            con.Close()
        Catch ex As Exception
            MsgBox(Err.Description, MsgBoxStyle.Critical)
        End Try
    End Sub