Bonjour, je dois afficher des données dans une gridview que je récupère à partir d'une BD.
Pour ce qui est de l'affichage, je n'ai pas de soucis.
J'ai réussi aussi à intégrer une pagination.
Le problème vient du "sorting", je n'arrive pas à gérer les 2 en même temps (sorting et paging).
J'ai fait plusieurs recherches, regardé sur plusieurs forum mais en vain.
Voici mon code :
Lorsque je clic sur un "Header", ça trie mais le paging disparaît...
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 <asp:GridView ID="GridView1" AllowPaging="true" PageSize="25" CssClass="mGrid" PagerStyle-CssClass="pgr" AlternatingRowStyle-CssClass="alt" runat="server" OnPageIndexChanging="GridView1_PageIndexChanging" OnInit="GridView1_Init" OnRowDataBound="GridView1_RowDataBound" ShowFooter="True" AllowSorting="true" OnSorting="GridView1_Sorting" Width="1050px"> <EmptyDataTemplate> <div style="height: 16px; width: 846px; margin-left: 0px; text-align:center"> No Data Available </div> </EmptyDataTemplate> <PagerSettings Mode="NextPreviousFirstLast" FirstPageText="First" LastPageText="Last" NextPageText="Next" PreviousPageText="Previous" PageButtonCount="3"/> <PagerStyle HorizontalAlign="Center"/> </asp:GridView> private string ConvertSortDirectionToSql(SortDirection sortDirection) { string newSortDirection = String.Empty; switch (sortDirection) { case SortDirection.Ascending: newSortDirection = "ASC"; break; case SortDirection.Descending: newSortDirection = "DESC"; break; } return newSortDirection; } DataTable GetDataTable(GridView dtg) { DataTable dt = new DataTable(); dt.Columns.Add("Account"); dt.Columns.Add("Journal"); dt.Columns.Add("Document"); dt.Columns.Add("Month"); dt.Columns.Add("Year"); dt.Columns.Add("Booking Date"); dt.Columns.Add("Due"); dt.Columns.Add("Comment"); dt.Columns.Add("Status Lettrage"); dt.Columns.Add("Matching"); dt.Columns.Add("Type Journal"); dt.Columns.Add("Debit"); dt.Columns.Add("Credit"); // add each of the data rows to the table foreach (GridViewRow row in dtg.Rows) { DataRow dr; dr = dt.NewRow(); for (int i = 0; i < row.Cells.Count; i++) { dr[i] = row.Cells[i].Text.Replace(" ", ""); } dt.Rows.Add(dr); } return dt; } protected void GridView1_Sorting(object sender, GridViewSortEventArgs e) { DataTable dt = new DataTable(); GridView1.DataSource = getItems(); GridView1.DataBind(); dt = GetDataTable(GridView1); if (dt != null) { DataView dataView = new DataView(dt); dataView.Sort = e.SortExpression + " " + ConvertSortDirectionToSql(e.SortDirection); GridView1.DataSource = dataView; GridView1.DataBind(); } }
Je ne comprends pas, suis-je sur une bonne voie ou alors à coté de la plaque?
Merci.
Partager