OVH Cloud OVH Cloud

Suppression de lignes dans un datagrid

1 réponse
Avatar
C. Vidal
Bonjour à tous,

Je bloque sur un point et j'aimerai avoir votre avis.
J'ai un datagrid qui est lié à un dataset (celui-ci est le résultat d'un
simple select d'une de mes tables).
J'ai créé un objet sqldataadapter pour le remplir
J'ai défini les commandes insert et update de mon dataadapter avec des
paramètres.

Jusque là pas de problèmes.

J'ai un bouton à côté de mon datagrid qui me permet de supprimer la ligne
sélectionnée de mon datagrid
Voici le code :
bm = Me.dgCorps.BindingContext(Me.dgCorps.DataSource, Me.dgCorps.DataMember)
Myds.Tables("PIECES_CORPS").Rows.RemoveAt(bm.Position)
Cela fonctionne bien car ma ligne est bien supprimée de mon datagrid.

Le problème se pose lorque je souhaite mettre à jour la base de données.

Je n'enregistre les modifcations qu'à la fermeture de mon formulaire

Voici le code :
...
Dim CmdBuild As SqlClient.SqlCommandBuilder
CmdBuild = New SqlClient.SqlCommandBuilder(MyAdapter)
MyAdapter.UpdateCommand = CmdBuild.GetUpdateCommand()
MyAdapter.Update(Myds, "PIECES_CORPS")

Et là, cela ne fonctionne pas. Les lignes ne sont pas effacées!!!!
J'ai essayé de définir une deletecommand pour le sqldataadapter, mais cela
ne change rien.
Auriez vous une idée car mes insert et update dans mon datagrid sont bien
reportés dans ma table.

Merci d'avance.

C. Vidal

1 réponse

Avatar
C. Vidal
Bonjour,

Finalement j'ai trouvé l'origine de mon problème.
Au lieu de faire
Myds.Tables("PIECES_CORPS").Rows.RemoveAt(bm.Position)
il faut faire
Myds.Tables("PIECES_CORPS").Rows(bm.position).delete()

Ainsi, les lignes sont bien marquées comme étant à effacer dans le datagrid
J'espère que cela pourra aider quelqu'un

C. Vidal

"C. Vidal" a écrit dans le message de news:
OY5AV9w$
Bonjour à tous,

Je bloque sur un point et j'aimerai avoir votre avis.
J'ai un datagrid qui est lié à un dataset (celui-ci est le résultat d'un
simple select d'une de mes tables).
J'ai créé un objet sqldataadapter pour le remplir
J'ai défini les commandes insert et update de mon dataadapter avec des
paramètres.

Jusque là pas de problèmes.

J'ai un bouton à côté de mon datagrid qui me permet de supprimer la ligne
sélectionnée de mon datagrid
Voici le code :
bm = Me.dgCorps.BindingContext(Me.dgCorps.DataSource,
Me.dgCorps.DataMember)
Myds.Tables("PIECES_CORPS").Rows.RemoveAt(bm.Position)
Cela fonctionne bien car ma ligne est bien supprimée de mon datagrid.

Le problème se pose lorque je souhaite mettre à jour la base de données.

Je n'enregistre les modifcations qu'à la fermeture de mon formulaire

Voici le code :
...
Dim CmdBuild As SqlClient.SqlCommandBuilder
CmdBuild = New SqlClient.SqlCommandBuilder(MyAdapter)
MyAdapter.UpdateCommand = CmdBuild.GetUpdateCommand()
MyAdapter.Update(Myds, "PIECES_CORPS")

Et là, cela ne fonctionne pas. Les lignes ne sont pas effacées!!!!
J'ai essayé de définir une deletecommand pour le sqldataadapter, mais cela
ne change rien.
Auriez vous une idée car mes insert et update dans mon datagrid sont bien
reportés dans ma table.

Merci d'avance.

C. Vidal