Bonjour à tous!
J'ai un problème, j'expose.
J'ai un gridview que j'alimente grâce à une list. Vu que je ne l'alimente pas automatiquement(avec un sqldatasource) je suis obligé de faire le tri manuellement dans l'événement sorting. Le tri fonctionne bien sur les chaînes de caractères exemple:
Alban, Albert, Jacques, Thomas...
Par contre pour les int il les prends comme des strings ce qui posent problème exemple:
1, 12345, 16789, 2, 2345678, 3
Alors que je voudrais 1, 2 , 3 , 12345, 16789, 2345678...
On agrémente cette explication de code...
On commence par les variables de la list
on voit qu'il n'y a pas que des strings...
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 private int _UserName; private string _nom; private double _moisDist; private double _moisTemps; private double _semDist; private double _semTemps; private double _veilleDist; private double _veilleTemps; private double _jourDist; private double _jourTemps;
ensuite le tri
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 private SortDirection GridViewSortDirection { get { if (ViewState["sortDirection"] == null) ViewState["sortDirection"] = SortDirection.Ascending; return (SortDirection)ViewState["sortDirection"]; } set { ViewState["sortDirection"] = value; } } private void SortGridView(string sortExpression, string direction) { List<userStat> userStatList = (List<userStat>)ViewState["userStatList"]; DataTable dt = new DataTable(); dt.Columns.Add("UserName"); dt.Columns.Add("nom"); dt.Columns.Add("moisDist"); dt.Columns.Add("moisTemps"); dt.Columns.Add("semDist"); dt.Columns.Add("semTemps"); dt.Columns.Add("veilleDist"); dt.Columns.Add("veilleTemps"); dt.Columns.Add("jourDist"); dt.Columns.Add("jourTemps"); foreach (userStat uS in userStatList) { DataRow dr = dt.NewRow(); dr["UserName"] = uS.UserName; dr["nom"] = uS.nom; dr["moisDist"] = uS.moisDist; dr["moisTemps"] = uS.moisTemps; dr["semDist"] = uS.semDist; dr["semTemps"] = uS.semTemps; dr["veilleDist"] = uS.veilleDist; dr["veilleTemps"] = uS.veilleTemps; dr["jourDist"] = uS.jourDist; dr["jourTemps"] = uS.jourTemps; dt.Rows.Add(dr); } DataView dv = new DataView(dt); dv.Sort = sortExpression + direction; GridView1.DataSource = dv; GridView1.DataBind(); PanelConnexion.Visible = false; Panel1.Visible = true; } private const string ASCENDING = " ASC"; private const string DESCENDING = " DESC"; //EVENEMENT SORTING protected void GridView_Sorting(object sender, GridViewSortEventArgs e) { string sortExpression = e.SortExpression; ViewState["SortExpression"] = sortExpression; if (GridViewSortDirection == SortDirection.Ascending) { GridViewSortDirection = SortDirection.Descending; SortGridView(sortExpression, DESCENDING); } else { GridViewSortDirection = SortDirection.Ascending; SortGridView(sortExpression, ASCENDING); } }
En espérant avoir été clair, merci
Partager