Datagridview garder la ligne selectionnée suivant le tri
spifspaf
Messages postés25Date d'inscriptionsamedi 14 juin 2014StatutMembreDernière intervention26 avril 2021
-
8 juil. 2016 à 13:16
vb95
Messages postés3467Date d'inscriptionsamedi 11 janvier 2014StatutContributeurDernière intervention24 mars 2024
-
9 juil. 2016 à 13:36
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
vb95
Messages postés3467Date d'inscriptionsamedi 11 janvier 2014StatutContributeurDernière intervention24 mars 2024168 Modifié par vb95 le 9/07/2016 à 11:28
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.
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 9 juil. 2016 à 11:51
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)
vb95
Messages postés3467Date d'inscriptionsamedi 11 janvier 2014StatutContributeurDernière intervention24 mars 2024168
>
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018 Modifié par vb95 le 9/07/2016 à 12:28
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
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
spifspaf
Messages postés25Date d'inscriptionsamedi 14 juin 2014StatutMembreDernière intervention26 avril 2021 9 juil. 2016 à 13:09
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 )
vb95
Messages postés3467Date d'inscriptionsamedi 11 janvier 2014StatutContributeurDernière intervention24 mars 2024168 9 juil. 2016 à 13:36
Tu as la réponse à ton problème dans mon dernier message
9 juil. 2016 à 11:51
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)
Modifié par vb95 le 9/07/2016 à 12:28
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