Enregistrement des modifications des données d'une DataGridView dans BDD SQL en passant par un DATASET
Bonjour,
J'utilise VB.NET 2010 express.
J'ai créé une base de donnée SQL (SQL Server 2008 R2) et j'en récupère les données dans un DataSet avant de les afficher dans une DataGridView. Jusque là aucun problème.
Si j'édite une cellule de ma DataGidView et que pour valider je clique n'importe quelle cellule d'une ligne au dessus ou en dessous dans la DataGridView, la BDD SQL sera mise à jour sans problème.
Par contre si j'édite une cellule de ma DataGidView et que pour valider je clique sur une autre cellule de la même ligne dans la DataGridView, la BDD SQL ne sera pas mise à jour. L'affichage dans la DataGridView est correct mais lorsque je recharge des données de la BDD SQL je constate que celles-ci sont restées les mêmes qu'avant la modification.
Quelqu'un connait-il la raison de ce problème et surtout la solution pour le résoudre ?
Merci d'avance ;)
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
|
Imports System.Data.SqlClient
Public Class Form
Public Connexion As SqlConnection = Nothing
Public Adaptateur2 As SqlDataAdapter = Nothing
Private Sub Form_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
Connexion = New SqlConnection(ConnexionString)
Adaptateur2 = New SqlDataAdapter("SELECT * FROM Propriétés", Connexion)
Dim CommandeBuilder2 As SqlCommandBuilder = New SqlCommandBuilder(Adaptateur2)
Connexion.Open()
Adaptateur2.Fill(MonDataSet, "Propriétés")
MonViewPropriétés = New DataView(MonDataSet.Tables("Propriétés"))
MonViewPropriétés.RowFilter = "Archive = 'N'"
MonViewPropriétés.Sort = "Code ASC" 'On trie par ordre croissant
Me.DataGridView1.DataSource = MonViewPropriétés
End Sub
'Jusque là pas de problème
'Après modification du contenu d'une cellule, si je clique sur n'importe quelle cellule d'une autre ligne située au dessus ou en dessous la BDD SQL est mise à jour
'Par contre si je clique sur une autre cellule de la même ligne aucune modification n'est faite dans la BDD SQL
Private Sub DataGridView1_CellEndEdit(sender As Object, e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView2.CellEndEdit
If Adaptateur2 IsNot Nothing Then
Adaptateur2.Update(MonDataSet, "Propriétés")
End If
End Sub
End Class |