Connaitre le numéro de la ligne sélectionnée (Datagridview / Dataset)

alexbesn Messages postés 21 Date d'inscription jeudi 23 avril 2009 Statut Membre Dernière intervention 4 août 2009 - 28 mai 2009 à 10:39
alexbesn Messages postés 21 Date d'inscription jeudi 23 avril 2009 Statut Membre Dernière intervention 4 août 2009 - 29 mai 2009 à 09:27
Bonjour.

J'ai un DataGridview que je remplis avec mon Dataset. Ce que je cherche c'est supprimer la ligne que l'utilisateur va sélectionner dans le datagridview.

Pour cela, lors de l'événement dgv_rowenter je récupère le num de la ligne qu'il a sélectionné. Ensuite, je supprime cette ligne dans mon dataset et je met à jour la base (jusqu'à là ça fonctionne).

Le problème est que si l'utilisateur clic sur une colone du dataset pour réorganiser l'ordre d'affichage, cela met les lignes dans un ordre différent du dataset. Donc s'il sélectionne une ligne sur le datagridview, le numéro de cette ligne ne correspond pas forcément à la ligne équivalente du dataset ! Et s'il clic sur supprimer, il va supprimer une ligne qui est pour la plupart du temps différente !

J'espère que vous comprennez mon problème et merci d'avance !

Voici mon code :

//On prend toute la table
                SqlCmd = "select * from " + listBox_tables.SelectedItem;

                //Déclaration du data adapteur
                OleDbDataAdapter Da = new OleDbDataAdapter(SqlCmd, Conn);

                //On supprime la ligne
                Ds.Tables[Convert.ToString(listBox_tables.SelectedItem)].Rows[ligne_select].Delete();

                //On maj la base
                CmdGrid = new OleDbCommandBuilder(Da);
                Da.DeleteCommand = CmdGrid.GetDeleteCommand();
                Da.Update(Ds, Convert.ToString(listBox_tables.SelectedItem));
A voir également:

2 réponses

cs_Robert33 Messages postés 834 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 14 janvier 2017 33
28 mai 2009 à 21:44
Bonsoir,

je pense que l'utilisation d'un objet CurrencyManager tu dois pouvoir conserver la position en cours sur la source, independament de la présentation.
il me semble que cet objet permet de conserver un lien entre la source et la vue.
mais je ne l'ai jamais utilisé...

C# is amazing, enjoy it!
0
alexbesn Messages postés 21 Date d'inscription jeudi 23 avril 2009 Statut Membre Dernière intervention 4 août 2009
29 mai 2009 à 09:27
Bonjour.

Merci pour ta réponse.

J'ai trouvé une autre solution : une fois le dataset modifié (car quand on modifie le datagridview on modifie le dataset au passage), il suffit de synchroniser le dataset avec la base access et ça fonctionne.

Seulement, j'ai un peu de mal à synchroniser les deux (ça marche bien que pour la suppression) personne n'a un exemple avec les commandbuilder et tout ?

Merci.
0
Rejoignez-nous