Datagridview garder la ligne selectionnée suivant le tri

Signaler
Messages postés
25
Date d'inscription
samedi 14 juin 2014
Statut
Membre
Dernière intervention
26 avril 2021
-
Messages postés
2448
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
24 juillet 2021
-
Bonjour à tous ,

je n'arrive pas à trouver comment maintenir la ligne sélectionée dans un datagridview au moment du tri ( descendant ou ascendant ) dans le header.
si l'un de vous à la solution ou éventuellement une piste, ça serait bienvenue :)

je sais repostionner la ligne


Dim ResultLigneSelect As String
ResultLigneSelect = Label5.Text
DataGridView1.Rows(ResultLigneSelect).Selected = True

Me.DataGridView1.CurrentCell = Me.DataGridView1.Rows(ResultLigneSelect).Cells(1)


mais je ne trouve pas comment la maintenir en utilisant le tri de colonne :(

Merci par avance

2 réponses

Messages postés
2448
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
24 juillet 2021
138
bonjour
Sous quel VB programmes-tu ? Je pense VBNet mais tu as posté dans la section générale de Visual Basic

si tu programmes en VB NET la méthode Sort de la DataGridview ne garde pas la cellule sélectionnée avant le tri . La seule piste serait que tu programmes toi-même ta propre routine de tri en y incluant le déplacement de la cellule sélectionnée si nécessaire

La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi. 
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
Bonjour, vb95,
Si en VB, ce ne peut être qu'en VB.Net (pas de datagridview dans les autres).
Je ne comprends par ailleurs pourquoi un tri n'est pas fait à priori, plutôt qu'à postériori.
Je ne comprends pas non plus l'intérêt d'utiliser un tel contrôle sans liaison à un recordset d'une base de données (et le tri est alors à faire dans la requête de liaison)
Messages postés
2448
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
24 juillet 2021
138 >
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018

Bonjour Uc
A mon avis notre ami sélectionne une cellule dans sa DataGridView ( supposons une liste de prénoms dans l'ordre alphabétique croissant)
S'il change le tri en ordre alphabétique décroissant il veut garder sélectionnée la même cellule
Pour la liaison à une base de données notre ami ne nous en dit rien

Si c'est un tri classique (alphabétique, numérique ou chronologique) il y aurait une solution : si tu sélectionnes la cellule N ( N variant de 0 à NombreLignes - 1) une fois le tri fait dans l'autre sens la cellule sélectionnée est la cellule NombreLignes - (N + 1)
Exemple

Croissant----Décroissant
0---------------------6
1---------------------5
2---------------------4
3---------------------3
4---------------------2
5---------------------1
6---------------------0

Si je sélectionnes le 2 dans la ligne de la liste croissante je le retrouve en 7 - (2+1) = 4 dans le liste décroissante soit NombreLignes - (Sélection + 1)
Attention la première ligne est toujours la ligne 0
Messages postés
25
Date d'inscription
samedi 14 juin 2014
Statut
Membre
Dernière intervention
26 avril 2021

Bonjour et merci pour vos réponses il est vrai que cela manque de précisons de ma part.
pour le programme c'est du vb.net il me semble ( je suis novice :( ) j'utilise visual studio 2013 et mes sont des .vb
Au niveau du datagrid ben j'affiche les resultats à partir d'une base de données MySql.
Et au niveau du tri ben c'est celui du datagrid j'ai rien modifié ( pas créé de sytéme de tri personnalisé )
Le but étant de garder celui de base et de simplement maintenir la ligne que j'ai selectionnée au départ ( pas de tri suivant la selection, mais simplement ascendant ou descendant comme le fait de base le datagrid )
Messages postés
2448
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
24 juillet 2021
138
Tu as la réponse à ton problème dans mon dernier message