从DataGridView中删除后,无法从.sdf数据库中删除行

时间:2012-09-19 04:27:48

标签: vb.net winforms datagridview sql-server-ce

我已将.sdf文件(sqlceserver v3.5)添加到我的winforms项目中。然后我添加了一个.sdf数据库并为其选择数据集模型。我还为此添加了一个datagridview,并从滚动窗格中将其数据源选为“LogBindingSource1”。 Rest代码是自动生成的。我选择了datagridview.Now的列,当我运行项目并从网格中删除行时,更改根本没有反映到数据库中。 我尝试了以下操作:

Private Sub DataGridView1_UserDeletedRow(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewRowEventArgs) Handles DataGridView1.UserDeletedRow  

    For i As Integer = 0 To DataGridView1.SelectedRows.Count - 1
        'Me.Database1DataSet3.log.Rows.RemoveAt(Convert.ToUInt16(DataGridView1.Rows(DataGridView1.SelectedRows(i).Index).Cells(0).Value))
        'Me.LogTableAdapter1.Delete(Convert.ToUInt16(DataGridView1.Rows(DataGridView1.SelectedRows(i).Index).Cells(0).Value))
        'Me.DataGridView1.Rows.RemoveAt(Me.DataGridView1.SelectedRows(i).Index)
        'Dim ind As Integer = DataGridView1.SelectedRows(i).Index
        Me.LogBindingSource1.RemoveAt(e.Row.Index)
        DataGridView1.Refresh()
        DataGridView1.Update()
        'Me.LogTableAdapter1.Update(Me.Database1DataSet3.Tables(0))
    Next

End Sub

我正在显示评论以显示我尝试过的所有排列。必须注意的是,Log是已绑定到网格的表的名称,并且是数据库中的单个表。

在询问之前,我访问了以下资源: 1)https://stackoverflow.com/questions/10575169/inserting-data-from-a-datagridview-to-a-sdf-sql-database 2)https://stackoverflow.com/questions/10575169/inserting-data-from-a-datagridview-to-a-sdf-sql-database(不使用表适配器) 3)http://www.codeproject.com/Articles/24656/A-Detailed-Data-Binding-Tutorial(太冗长)

1 个答案:

答案 0 :(得分:1)

我刚刚注意到这个悬而未决的问题。这是一种简单的方法来浏览突出显示的行并从datagridview和数据库中删除。您需要提供自己的连接字符串和数据库名称。在这里,我称之为Ranchconn

Private Sub btnDelete_Click(sender As Object, e As EventArgs) Handles btnDelete.Click
    Ranchconn.Open()
    cmdRanch.Connection = Ranchconn
    For Each row As DataGridViewRow In cdgvRanchEntry.SelectedRows
        cmdRanch.CommandText = "Delete * FROM Entries where ID = " & row.Cells("ID").Value
        cmdRanch.ExecuteNonQuery()
        cdgvRanchEntry.Rows.Remove(row)
    Next row
    Ranchconn.Close()
End Sub