Datagridview BindingSource.RemoveCurrent删除多行

时间:2016-07-07 16:04:28

标签: vb.net datagridview

我有一个Access数据库,但是我遇到了RemoveCurrent方法删除多行而不是一行的问题。 在表格中,我有一个允许用户选择的组合框 他想要查看/删除哪个项目。 当用户按下删除按钮时,代码将转到我拥有所有表格的表单,并将组合框中的名称与游戏表中具有2列的每一行进行比较,其中一列具有名称,另一行具有名称。日期,两者都是主键,只要游戏不完全等于表中已有的游戏,用户就可以添加具有相同名称或日期的多个游戏。

但是当它删除与组合框中所选行匹配的行时,它不仅会删除相应的游戏,还会删除具有相同日期的每个游戏。 我希望它只删除匹配的游戏。 我的删除功能在下面。

Private Sub but_eliminar_Click(sender As Object, e As EventArgs) Handles but_eliminar.Click
    Tabelas.Show()
    'Tabelas is the form with every table in the database
    Tabelas.JogoBindingSource.MoveFirst()
    For Each row As DataGridViewRow In Tabelas.jogos.Rows
        cri = Tabelas.jogos.CurrentCell.RowIndex
        'Compare the value on the combobox with the table that keeps the games record
        If Tabelas.jogos(0, cri).Value = ComboBox1.SelectedValue Then
            Dim op = MessageBox.Show("Are you sure you want to delete this game?" & vbNewLine & vbNewLine & "Name: " & Tabelas.jogos(0, >cri).Value & vbNewLine & "Date: " & Tabelas.jogos(1, cri).Value, "Delete game", MessageBoxButtons.YesNo)
            If op = vbYes Then
                Tabelas.JogoBindingSource.RemoveCurrent()
                Tabelas.JogoBindingSource.EndEdit()
                Tabelas.JogoTableAdapter.Update(Tabelas.Database1DataSet.Jogo)
                'Use this code to update the combobox's menu
                Database1DataSet1.Clear()
                JogoTableAdapter.Fill(Database1DataSet1.Jogo)
                ComboBox1.SelectedIndex = -1
                MsgBox("Game deleted successfully")
                Exit Sub
            End If
            If op = vbNo Then
                Exit Sub
            End If
        End If
        Tabelas.JogoBindingSource.MoveNext()
    Next
    Tabelas.Close()
End Sub

0 个答案:

没有答案