0

次のように列名を変更したい 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

しかし、私はエラーになっています:

インデックスが範囲外でした。負ではなく、コレクションのサイズより小さくなければなりません。パラメータ名:インデックス

4

2 に答える 2

0

おそらくgvKeyValueOfstringstring.Columns長さが 2 未満であるため、インデックス 0 または 1 で列にアクセスすると失敗します。

そのコードを実行する前に、列が正常に作成されていることを確認してください。

また、RowDataBound イベントでそれを実行する必要はないと思いますPage_Load(そのため、ヘッダーの場合はすべての行をチェックする必要はありません)。とにかくそこでやりたい場合は、その行のセルの値を変更するだけでよいでしょう:

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

とにかく、列が適切に作成されていない場合、このコードも失敗すると思います。

于 2012-06-08T18:11:31.247 に答える
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
于 2012-09-13T14:48:00.077 に答える