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 :

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();
            }
 
        }
Lorsque je clic sur un "Header", ça trie mais le paging disparaît...

Je ne comprends pas, suis-je sur une bonne voie ou alors à coté de la plaque?

Merci.