【发布时间】:2013-11-12 14:36:48
【问题描述】:
我试图通过 datagridview 删除我的数据库中的一条记录,只需按 delete 键,但它给我错误“索引超出范围。必须是非负数且小于集合的大小。”。这是我的代码
Private Sub DataGridView1_UserDeletedRow(sender As Object, e As DataGridViewRowEventArgs) Handles DataGridView1.UserDeletedRow
For i = 0 To DataGridView1.Rows.Count - 1
Dim deleterows As Integer = DataGridView1.SelectedRows(i).Cells(0).Value
Dim sqlquery As String = "delete from tblname where ID = " & deleterows & ";"
Dim sqlcommand As New OleDbCommand
With sqlcommand
.CommandText = sqlquery
.Connection = conn
.ExecuteNonQuery()
End With
Next
End Sub
【问题讨论】:
-
首先,您正在循环遍历所有行,而不是测试该行是否为选定行。接下来,当您删除一行时,您的 For/Next 循环的基础会发生变化,因此如果它删除任何行,实际行数将小于它开始时导致错误的值。 VB 为
DataGridView1.Rows.Count - 1创建一个临时变量,例如28,当你删除时,不再有那么多循环。
标签: vb.net gridview datagridview