2012-06-08 80 views
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 

,但我得到錯誤:

索引超出範圍。必須是非負數且小於集合的大小。 參數名稱:索引

+2

檢查您的gridview'gvKeyValueOfstringstring'有多少列? – Rahul

+0

一個簡單的調試可以給你答案。 – Aristos

回答

0

可能gvKeyValueOfstringstring.Columns的長度小於2,因此當您訪問索引爲0或1的列時,它將失敗。

在執行該代碼之前檢查列正在創建成功。另外,我認爲你不需要在RowDataBound事件中執行它,它可能在Page_Load(所以你不必檢查每一行,如果它是頭)。如果你無論如何想這樣做在那裏,也許你可以改變該行的單元格的值:

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

無論如何,我預計如果沒有正確創建的列這段代碼也將失敗。

+0

列是自動生成的。 gridview綁定與XML有兩列 – DotnetSparrow

+0

也許是因爲這一點。嘗試第二個選項,只更改標題行的單元格文本 – ivowiblo

+0

第二個選項是什麼。怎麼做? – DotnetSparrow

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 
+1

您可能會考慮解釋此代碼,以及它爲什麼是答案提出的問題? –

相關問題