删除,更新或插入后DataGridView不会更新

时间:2016-10-13 17:43:29

标签: vb.net ms-access datagridview

我有一个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

正如我们在消息框之后看到的那样,应该使用fill方法更新列表。但数据网格仍然是相同的。

这里有一些照片可以理解我在说什么。我将不胜感激。

更新数据之前 Here's before update the data. See the datagrid

更新数据后。什么也没发生 And here's after I updated the data. Nothing happened

1 个答案:

答案 0 :(得分:1)

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

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

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