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

Signaler
Messages postés
21
Date d'inscription
jeudi 23 avril 2009
Statut
Membre
Dernière intervention
4 août 2009
-
Messages postés
21
Date d'inscription
jeudi 23 avril 2009
Statut
Membre
Dernière intervention
4 août 2009
-
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));

2 réponses

Messages postés
834
Date d'inscription
samedi 15 novembre 2008
Statut
Membre
Dernière intervention
14 janvier 2017
29
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!
Messages postés
21
Date d'inscription
jeudi 23 avril 2009
Statut
Membre
Dernière intervention
4 août 2009

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.