Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
vb.net gridview中的无按钮删除_Vb.net_Gridview_Datagridview - Fatal编程技术网

vb.net gridview中的无按钮删除

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

我正试图通过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

我想知道问题是否出在“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