【问题标题】:DataGridView does not update after delete, update or insert删除、更新或插入后 DataGridView 不更新
【发布时间】:2016-10-13 17:43:29
【问题描述】:

我有一个 DatagGridView,它有一个来自 Access 数据库的 DataSet。我在删除、更新或插入数据时遇到问题。

这是我更新方法的一个例子。

Private Sub btnactualizar_Click(sender As Object, e As EventArgs) Handles btnactualizar.Click
    novacios()
    Try
        con = New OleDb.OleDbConnection(ruta)
        con.Open()
        Dim actualiza As String = "UPDATE Usuarios SET nombre_real=@a1, correo = @a2, pass = @a3, activo = @a4 WHERE Correo = @a5"
        sentencia = New OleDb.OleDbCommand(actualiza)
        sentencia.Connection = con
        sentencia.Parameters.AddWithValue("@a1", txtusuarios.Text)
        sentencia.Parameters.AddWithValue("@a2", txtmail.Text)
        sentencia.Parameters.AddWithValue("@a3", txtpass.Text)
        sentencia.Parameters.AddWithValue("@a4", txtactivo.Text)
        sentencia.Parameters.AddWithValue("@a5", txtusuarios.Text)
        sentencia.ExecuteReader()
        con.Close()
        MessageBox.Show("Actualización realzada con éxito", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Information)
        Me.UsuariosTableAdapter.Fill(Me.Bd_proyectoNDataSet.Usuarios)
        limpiatextos()
    Catch ex As Exception
        ex.Message.ToString()
    End Try
End Sub

正如我们在消息框之后看到的,应该使用填充方法更新列表。但是数据网格还是一样的。

这里有一些图片来理解我在说什么。我将不胜感激。

更新数据之前

更新数据后。什么都没发生

【问题讨论】:

  • sentencia.ExecuteNonQuery()

标签: vb.net ms-access datagridview


【解决方案1】:

你做事倒退了。不要对数据库进行更改,然后尝试从那里更新网格。您首先更新本地数据,然后将该更改保存到数据库中。

您的网格绑定到BindingSource,并且绑定到您键入的DataSet 中的DataTable。这就是你应该做出改变的地方。您可能应该将TextBoxes 绑定到相同的数据,在这种情况下,对数据的修改会自动发生。如果不是,那么您应该将数据从TextBoxes 复制回您正在编辑的键入的DataRow。该网格将自动反映该更改。然后,您可以在表适配器上调用 Update 以将这些更改从 DataTable 保存回数据库。

简而言之,不要直接对数据库进行更改,然后尝试将这些更改从数据库中提取到本地数据中。首先对本地数据进行更改,然后将这些更改保存到数据库中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-22
    • 1970-01-01
    • 1970-01-01
    • 2012-04-27
    • 1970-01-01
    • 1970-01-01
    • 2017-07-05
    相关资源
    最近更新 更多