2016-10-13 132 views
0

我有一個DatagGridView,它有一個來自Access數據庫的DataSet。我刪除,更新或插入數據時遇到問題。刪除,更新或插入後DataGridView不會更新

這是我更新方法的一個例子。

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 [email protected], 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方法更新。但是datagrid仍然是一樣的。

這裏有一些圖片來理解我在說什麼。我會感謝任何幫助。

之前更新數據 Here's before update the data. See the datagrid

更新數據後。什麼都沒有發生 And here's after I updated the data. Nothing happened

+0

'sentencia.ExecuteNonQuery()' – LarsTech

回答

1

你正在做事情倒退。不要對數據庫進行更改,然後嘗試從那裏更新網格。您先更新本地數據,然後將更改保存到數據庫。

您的網格綁定到BindingSource,並且在您輸入的DataSet中綁定到DataTable。這就是你應該做出改變的地方。這可能是因爲您應該將您的TextBoxes綁定到相同的數據,在這種情況下,數據的修改會自動發生。如果不是,那麼您應該將TextBoxes中的數據複製回您正在編輯的輸入DataRow。該網格將自動反映這一變化。 YOu然後在您的表格適配器上調用Update將這些來自DataTable的更改保存回數據庫。

總之,不要直接對數據庫進行更改,然後嘗試將這些更改從數據庫中提取到本地數據中。首先對本地數據進行更改,然後將這些更改保存到數據庫。

相關問題