vb.net gridview中的无按钮删除
我正试图通过datagridview删除数据库中的一条记录,只需按delete键,但它给我的错误是“索引超出范围。必须为非负且小于集合的大小。”。这是我的密码vb.net gridview中的无按钮删除,vb.net,gridview,datagridview,Vb.net,Gridview,Datagridview,我正试图通过datagridview删除数据库中的一条记录,只需按delete键,但它给我的错误是“索引超出范围。必须为非负且小于集合的大小。”。这是我的密码 Private Sub DataGridView1_UserDeletedRow(sender As Object, e As DataGridViewRowEventArgs) Handles DataGridView1.UserDeletedRow For i = 0 To DataGridView1.Rows.Count
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
我想知道问题是否出在“DataGridView1.Rows.Count-1”上 它可能没有执行-1计算
尝试(DataGridView1.Rows.Count-1)如果您想使用循环删除行,请尝试向后浏览您的行(即从最后一行开始往回走,而不是从前面开始向前走) 对于您正在描述的内容,最好将循环全部省略(使用您自己的代码):
首先,您正在遍历所有行,而不是测试该行是否为选定行。接下来,当您删除一行时,For/Next循环的基础将发生变化,因此如果它删除任何行,实际行计数将小于它开始时的值,从而导致错误。VB为
DataGridView1.Rows.Count-1
创建一个临时变量,例如28
,当您删除时,不再有那么多可循环使用。
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