簡體   English   中英

使用 Vb.net 中的單個更新按鈕在 DataGridView 中插入、刪除和編輯數據

[英]Insert, Delete, and Edit Data in DataGridView using single Update Button in Vb.net

我試圖在 Vb.net 中添加、刪除和編輯 function,方法是使用一個更新按鈕並手動更改 datagridview 中的值,然后點擊更新。 但是,我收到一條錯誤消息,指出“System.InvalidOperationException: 'Update requires a valid UpdateCommand when passed DataRow collection with modified”

有任何想法嗎? 錯誤出現在 da.Update(changes) 旁邊

同樣在我的代碼中未顯示的上述代碼中,我在私有 form1_load 子中有 load_data() 。

這是代碼:

Dim da As New SqlDataAdapter
Dim dt As New DataSet

Private Sub Button1_Click_1(sender As Object, e As EventArgs) Handles Button1.Click
    Dim cmd As New SqlCommandBuilder
    Dim changes As New DataSet
    changes = dt.GetChanges
    If changes IsNot Nothing Then
        da.Update(changes)
        da.Fill(dt)
        DataGridView1.DataSource = dt.Tables(0)
    End If
End Sub

Private Sub load_data()
    Using connection = New SqlConnection("Data Source=.\SQLEXPRESS;Initial Catalog=vbconnectionfinal;Integrated Security=True")

        da = New SqlDataAdapter("Select * From TrueTrack", connection)
        dt.Clear()
        da.Fill(dt)
        DataGridView1.DataSource = dt.Tables(0)

    End Using
End Sub

您正在創建SqlCommandBuilder但沒有將其與SqlDataAdapter關聯,那么有什么意義呢? 命令構建器的全部目的是在您在數據適配器上調用Update時自動生成操作命令。 當您創建數據適配器時,請立即創建命令構建器並將兩者關聯起來,您可以通過將數據適配器作為參數傳遞給命令構建器的構造函數來實現。

以下代碼適用於我。

Dim da As New SqlDataAdapter
Dim dt As New DataSet
Dim connection = New SqlConnection("connection string")
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim cmd As New SqlCommandBuilder(da)
    Dim changes As New DataSet
    changes = dt.GetChanges
    If changes IsNot Nothing Then
        da.Update(changes)
        DataGridView1.DataSource = dt.Tables(0)
    End If
End Sub
Private Sub load_data()
    Dim cmd As SqlCommand = New SqlCommand("Select * From TrueTrack", connection)
    da = New SqlDataAdapter(cmd)
    dt.Clear()
    da.Fill(dt)
    DataGridView1.DataSource = dt.Tables(0)
End Sub

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    load_data()
End Sub

Private Sub Form1_FormClosing(sender As Object, e As FormClosingEventArgs) Handles MyBase.FormClosing
    connection.Close()
End Sub

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM