Bonjour,
J'ai mis en place un gridview sur une page qui lorsque je tri sur l'une ou l'autre des colonnes affiche une image indiquant la colonne de tri et la direction du tri. Tout cela fonctionne très bien, mais lorsque je change de page l'image qui normalement devrait apparaitre au côté de l'en-tête sélectionnée n'apparait pas !
Auriez-vous une idée de la solution à mettre en œuvre pour résoudre ce problème ? Devrais-je ajouter quelque chose quelque part ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" CellPadding="4" ForeColor="#333333" GridLines="None" DataKeyNames="Identifiant" AllowSorting="True" onsorting="GridView1_Sorting" onpageindexchanging="GridView1_PageIndexChanging" OnRowCreated = "GridView1_OnRowCreated" allowpaging="True" PageSize="5" EnableViewState="False" > <Columns> </Columns> </asp:GridView>
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111 private String m_strSortExp; private SortDirection m_SortDirection; private DataSet Liste_GridView1 { get { return (Session["Liste_GridView1"] == null) ? null : (DataSet) Session["Liste_GridView1"]; } set { Session["Liste_GridView1"] = value; } } public string SortExpression { get { return (ViewState["sortExpression"]==null)? "Monchamp1": (string)ViewState["sortExpression"]; } set { ViewState["sortDirection"] = value; } } public SortDirection SortDirection { get{return (ViewState["SortDirection"] == null)? SortDirection.Ascending : (SortDirection)ViewState["SortDirection"];} set{ViewState["SortDirection"] = value;} } protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { m_strSortExp = SortExpression; m_SortDirection =SortDirection; Liste_GridView1 = MaClasse.MaListeData().ToDataSet(); GridView1.DataSource = Liste_GridView1; GridView1.DataBind(); } } protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e) { GridView1.DataSource = Liste_GridView1; GridView1.PageIndex = e.NewPageIndex; GridView1.DataBind(); } protected void GridView1_Sorting(object sender, GridViewSortEventArgs e) { string sortExpression = e.SortExpression; string direction = string.Empty; switch(SortDirection) { case SortDirection.Ascending: SortDirection = SortDirection.Descending; SortExpression = sortExpression; m_SortDirection = SortDirection; m_strSortExp = sortExpression; direction = " DESC"; break; case SortDirection.Descending: SortDirection = SortDirection.Ascending; SortExpression = sortExpression; m_SortDirection = SortDirection; m_strSortExp = sortExpression; direction = " ASC"; break; } DataTable table = Liste_GridView1.Tables[0]; table.DefaultView.Sort = sortExpression + direction; GridView1.DataSource = table; GridView1.DataBind(); } protected void GridView1_OnRowCreated(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.Header) AddSortImage(e.Row); } private void AddSortImage(GridViewRow headerRow) { int selCol = GetSortColumnIndex(m_strSortExp); if (-1 == selCol) return; Image sortImage = new Image(); if (SortDirection.Ascending == m_SortDirection) sortImage.ImageUrl = "~/ressources/icones/asc.jpg"; else sortImage.ImageUrl = "~/ressources/icones/desc.jpg"; headerRow.Cells[selCol].Controls.Add(sortImage); } private int GetSortColumnIndex(String strCol) { foreach (DataControlField field in LstClients.Columns) if (field.SortExpression == strCol) return LstClients.Columns.IndexOf(field); return -1; }
Merci d'avance pour vos réponse
Partager