【问题标题】:Unable to delete rows from .sdf database after deleting from DataGridView从 DataGridView 删除后无法从 .sdf 数据库中删除行
【发布时间】:2012-09-19 04:27:48
【问题描述】:

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

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

我正在展示 cmets 以展示我尝试过的所有排列。需要注意的是,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(太冗长)

【问题讨论】:

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


    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-23
      • 1970-01-01
      相关资源
      最近更新 更多