Désactiver le tri d'un gridview [Résolu]

Signaler
Messages postés
240
Date d'inscription
lundi 18 juin 2007
Statut
Membre
Dernière intervention
18 février 2011
-
Messages postés
240
Date d'inscription
lundi 18 juin 2007
Statut
Membre
Dernière intervention
18 février 2011
-
Bonjour à tous,
J'ai un soucis avec le tri sur l'entête d'un gridview.
Si je clique sur un entête de colonne, il tri sur la colonne ... Donc tout est bien !!
Le Pb que j'ai, c'est que je souhaite, après un nouveau databind (suite à l'application de filtres (des cases à cocher permettant de ne rapporter que certains enregistrement), annuler le tri par cette colonne.
Mais je ne vois pas bien quelle propriété du gridview appeler.
Quelqu'un à une idée ??
Merci d'avance
@+

9 réponses

Messages postés
240
Date d'inscription
lundi 18 juin 2007
Statut
Membre
Dernière intervention
18 février 2011

Finalement, j'ai trouvé une solution toute bête.
Je reset le sort du gridview avec une valeur de tri nulle
AttenteGV.Sort(

"", SortDirection.Ascending)

Merci à toi!!
@+
Messages postés
417
Date d'inscription
vendredi 13 juin 2008
Statut
Membre
Dernière intervention
21 juillet 2010
1
Sur l'événement Sorting, tu peux faire un truc du genre :

For n As Integer = 0 To GridView1.Columns.Count - 1
            If GridView1.Columns(n).SortExpression = e.SortExpression Then
                GridView1.Columns(n).HeaderStyle.BackColor = Drawing.Color.Red
            Else
                GridView1.Columns(n).HeaderStyle.BackColor = Drawing.Color.White
            End If
 Next

GGtry
Messages postés
417
Date d'inscription
vendredi 13 juin 2008
Statut
Membre
Dernière intervention
21 juillet 2010
1
Bonsoir,

Pour désactiver le tri sur toutes les colonnes, tu peux utiliser (en vb) :

GridView1.AllowSorting = "false"

Pour le désactiver uniquement sur une colonne particulière, tu peux vider sa propriété SortExpression, par exemple (ici pour la troisième colonne) :

GridView1.Columns(2).SortExpression = ""

Cordialement,

GGtry
Messages postés
240
Date d'inscription
lundi 18 juin 2007
Statut
Membre
Dernière intervention
18 février 2011

bonjour ggtry,
merci pour la réponse!!
Ce qui m'annène une autre question :
comment savoir sur quelle coonne est réalisé le tri ?
@+
Messages postés
417
Date d'inscription
vendredi 13 juin 2008
Statut
Membre
Dernière intervention
21 juillet 2010
1
Bonjour,

Je ne sais pas s'il y a un meilleur moyen, mais pour déterminer sur quelle colonne le tri a été réalisé, tu peux d'abord récupérer le sortExpression de la gridview avec :
GridView1.SortExpression (pour le récupérer sur l'événement sorting, tu dois utiliser e.SortExpression pour obtenir l'expression de tri qui vient d'être choisie).
Pour récupérer l'index de la colonne, il y aurait peut-être mieux, mais tu peux faire une boucle en comparant GridView1.Columns(n).SortExpression et GridView1.SortExpression, pour déterminer à quelle colonne apparatient le SortExpression en cours.

GGtry
Messages postés
240
Date d'inscription
lundi 18 juin 2007
Statut
Membre
Dernière intervention
18 février 2011

J'ai aussi pensé à la boucle.
Je teste tout ça et retourne mon résultat.
Merci GGtry !
Messages postés
417
Date d'inscription
vendredi 13 juin 2008
Statut
Membre
Dernière intervention
21 juillet 2010
1
D'accord. Ce que tu voulais, c'était annuler le tri effectué, et pas empêcher le tri sur la gridview après l'opération de filtrage ?
Je n'avais pas compris.

GGtry
Messages postés
240
Date d'inscription
lundi 18 juin 2007
Statut
Membre
Dernière intervention
18 février 2011

C'est ça !!
J'ai du mal le présenter ...
Petite question subsidiaire :
Comment changer l'aspect de la cellule sur laquelle on opère le tri (genre on passe en fond rouge la cellule du header qui sert au tri).
Il n'y aurait pas un style pour ça ?
@+ et encore merci ..
Messages postés
240
Date d'inscription
lundi 18 juin 2007
Statut
Membre
Dernière intervention
18 février 2011

Et oui ...
Toujours une boucle ...
Celà dit, ça fonctionne effectivement très bien!
Merci
@+