Bonjour,
Je suis en train de modifier une classe MaGridView dans mon application ASP.NET. Je voudrais ajouter une petite flèche orientée vers le haut ou vers le bas dans le header de ma grille, pour indiquer que la colonne correspondante a été triée de façon ascendante ou descendante.
Or je constate que lorsque je place le code correspondant dans l'événement OnSorting de la grille, bien que le code s'exécute correctement, la flèche ne s'affiche jamais.
Par contre, si je place le même code dans la page ASP où j'utilise la grille (dans l'événement gridview_Sorting()), la flèche s'affiche sans problèmes.
J'aimerais donc savoir comment je peux procéder pour que le code placé directement dans la classe MaGridView fonctionne. Cela s'explique t-il par le fait que les contrôles ajoutés seraient perdus après rechargement de la page ? Et comment faire alors ?
Merci de vos conseils.
Le code utilisé dans les deux cas :
(Pour info, g.sortdirection est une propriété de la gridview qui indique dans quel sens la colonne a été triée. colonneTriee est une variable contenant le nom de la colonne qui a été triée).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 var g= (MaGridView)sender; for (int i = 0; i <= g.HeaderRow.Cells.Count - 1; i++) { var c = g.HeaderRow.Cells[i]; if (((DataControlFieldCell)c).ContainingField.SortExpression.Equals(colonneTriee.ToString())) { Image img = new Image(); img.ImageUrl = (g.sortdirection == GridViewSortingDirection.ASC) ? "Images/desc2.gif" : "Images/asc2.gif"; g.HeaderRow.Cells[i].Controls.Add(img); break; } }
Partager