1 public class WebGridView:GridView
2 {
3 �
4 /**//// <summary>
5 // Whether to enable or disable multiple column sorting
6 /// </summary>
7 [
8 Description("Whether to enable multi-column sorting function"),
9 Category("Sort"),
10 DefaultValue("false"),
11 ]
12 public bool AllowMultiColumnSorting
13 {
14 get
15 {
16 object o = ViewState["EnableMultiColumnSorting"];
17 return (o != null ? (bool)o : false);
18 }
19 set
20 {
21 AllowSorting = true;
22 ViewState["EnableMultiColumnSorting"] = value;
23 }
24 }
25 /**//// <summary>
26 /// Display icons in ascending order
27 /// </summary>
28 [
29 Description("Show icons in ascending order"),
30 Category("Sort"),
31 Editor("", typeof()),
32 DefaultValue(""),
33
34 ]
35 public string SortAscImageUrl
36 {
37 get
38 {
39 object o = ViewState["SortImageAsc"];
40 return (o != null ? () : "");
41 }
42 set
43 {
44 ViewState["SortImageAsc"] = value;
45 }
46 }
47 /**//// <summary>
48 /// Display icons in descending order
49 /// </summary>
50 [
51 Description("Show icons in descending order"),
52 Category("Sort"),
53 Editor("", typeof()),
54 DefaultValue(""),
55 ]
56 public string SortDescImageUrl
57 {
58 get
59 {
60 object o = ViewState["SortImageDesc"];
61 return (o != null ? () : "");
62 }
63 set
64 {
65 ViewState["SortImageDesc"] = value;
66 }
67 }
68 #endregion
69 Rewrite method #region Rewrite method
70 protected override void OnSorting(GridViewSortEventArgs e)
71 {
72 if (AllowMultiColumnSorting)
73 {
74 = GetSortExpression(e);
75 }
76
77 (e);
78 }
79 protected override void OnRowCreated(GridViewRowEventArgs e)
80 {
81 if ( == )
82 {
83 if (SortExpression != )
84 {
85 DisplaySortOrderImages(SortExpression, );
86 (0, 0, , );
87 }
88 }
89 (e);
90 }
91 #endregion
92 Protected Method #region Protected Method
93 /**//// <summary>
94 /// Get the sort expression
95 /// </summary>
96 protected string GetSortExpression(GridViewSortEventArgs e)
97 {
98 string[] sortColumns = null;
99 string sortAttribute = SortExpression;
100
101 if (sortAttribute != )
102 {
103 sortColumns = (",".ToCharArray());
104 }
105 if (() > 0 || ())
106 {
107 sortAttribute = ModifySortExpression(sortColumns, );
108 }
109 else
110 {
111 sortAttribute += (",", , " ASC ");
112 }
113 return (",".ToCharArray()).TrimEnd(",".ToCharArray());
114
115 }
116 /**//// <summary>
117 /// Modify the sort order
118 /// </summary>
119 protected string ModifySortExpression(string[] sortColumns, string sortExpression)
120 {
121 string ascSortExpression = (sortExpression, " ASC ");
122 string descSortExpression = (sortExpression, " DESC ");
123
124 for (int i = 0; i < ; i++)
125 {
126
127 if ((sortColumns[i]))
128 {
129 sortColumns[i] = descSortExpression;
130 }
131
132 else if ((sortColumns[i]))
133 {
134 (sortColumns, i, 1);
135 }
136 }
137
138 return (",", sortColumns).Replace(",,", ",").TrimStart(",".ToCharArray());
139
140 }
141 /**//// <summary>
142 /// Get the current expression to sort the selected column
143 /// </summary>
144 protected void SearchSortExpression(string[] sortColumns, string sortColumn, out string sortOrder, out int sortOrderNo)
145 {
146 sortOrder = "";
147 sortOrderNo = -1;
148 for (int i = 0; i < ; i++)
149 {
150 if (sortColumns[i].StartsWith(sortColumn))
151 {
152 sortOrderNo = i + 1;
153 if (AllowMultiColumnSorting)
154 {
155 sortOrder = sortColumns[i].Substring().Trim();
156 }
157 else
158 {
159 sortOrder = ((SortDirection == ) ? "ASC" : "DESC");
160 }
161 }
162 }
163 }
164 /**//// <summary>
165 /// Draw pictures in ascending and descending order
166 /// </summary>
167 protected void DisplaySortOrderImages(string sortExpression, GridViewRow dgItem)
168 {
169 string[] sortColumns = (",".ToCharArray());
170
171 for (int i = 0; i < ; i++)
172 {
173 if ([i]. > 0 && [i].Controls[0] is LinkButton)
174 {
175 string sortOrder;
176 int sortOrderNo;
177 string column = ((LinkButton)[i].Controls[0]).CommandArgument;
178 SearchSortExpression(sortColumns, column, out sortOrder, out sortOrderNo);
179 if (sortOrderNo > 0)
180 {
181 string sortImgLoc = (("ASC") ? SortAscImageUrl : SortDescImageUrl);
182
183 if (sortImgLoc != )
184 {
185 Image imgSortDirection = new Image();
186 = sortImgLoc;
187 [i].(imgSortDirection);
188
189 }
190 else
191 {
192
193 if (AllowMultiColumnSorting)
194 {
195 Literal litSortSeq = new Literal();
196 = ();
197 [i].(litSortSeq);
198
199 }
200 }
201 }
202 }
203 }
204
205 }
206 #endregion
207 }
2 {
3 �
4 /**//// <summary>
5 // Whether to enable or disable multiple column sorting
6 /// </summary>
7 [
8 Description("Whether to enable multi-column sorting function"),
9 Category("Sort"),
10 DefaultValue("false"),
11 ]
12 public bool AllowMultiColumnSorting
13 {
14 get
15 {
16 object o = ViewState["EnableMultiColumnSorting"];
17 return (o != null ? (bool)o : false);
18 }
19 set
20 {
21 AllowSorting = true;
22 ViewState["EnableMultiColumnSorting"] = value;
23 }
24 }
25 /**//// <summary>
26 /// Display icons in ascending order
27 /// </summary>
28 [
29 Description("Show icons in ascending order"),
30 Category("Sort"),
31 Editor("", typeof()),
32 DefaultValue(""),
33
34 ]
35 public string SortAscImageUrl
36 {
37 get
38 {
39 object o = ViewState["SortImageAsc"];
40 return (o != null ? () : "");
41 }
42 set
43 {
44 ViewState["SortImageAsc"] = value;
45 }
46 }
47 /**//// <summary>
48 /// Display icons in descending order
49 /// </summary>
50 [
51 Description("Show icons in descending order"),
52 Category("Sort"),
53 Editor("", typeof()),
54 DefaultValue(""),
55 ]
56 public string SortDescImageUrl
57 {
58 get
59 {
60 object o = ViewState["SortImageDesc"];
61 return (o != null ? () : "");
62 }
63 set
64 {
65 ViewState["SortImageDesc"] = value;
66 }
67 }
68 #endregion
69 Rewrite method #region Rewrite method
70 protected override void OnSorting(GridViewSortEventArgs e)
71 {
72 if (AllowMultiColumnSorting)
73 {
74 = GetSortExpression(e);
75 }
76
77 (e);
78 }
79 protected override void OnRowCreated(GridViewRowEventArgs e)
80 {
81 if ( == )
82 {
83 if (SortExpression != )
84 {
85 DisplaySortOrderImages(SortExpression, );
86 (0, 0, , );
87 }
88 }
89 (e);
90 }
91 #endregion
92 Protected Method #region Protected Method
93 /**//// <summary>
94 /// Get the sort expression
95 /// </summary>
96 protected string GetSortExpression(GridViewSortEventArgs e)
97 {
98 string[] sortColumns = null;
99 string sortAttribute = SortExpression;
100
101 if (sortAttribute != )
102 {
103 sortColumns = (",".ToCharArray());
104 }
105 if (() > 0 || ())
106 {
107 sortAttribute = ModifySortExpression(sortColumns, );
108 }
109 else
110 {
111 sortAttribute += (",", , " ASC ");
112 }
113 return (",".ToCharArray()).TrimEnd(",".ToCharArray());
114
115 }
116 /**//// <summary>
117 /// Modify the sort order
118 /// </summary>
119 protected string ModifySortExpression(string[] sortColumns, string sortExpression)
120 {
121 string ascSortExpression = (sortExpression, " ASC ");
122 string descSortExpression = (sortExpression, " DESC ");
123
124 for (int i = 0; i < ; i++)
125 {
126
127 if ((sortColumns[i]))
128 {
129 sortColumns[i] = descSortExpression;
130 }
131
132 else if ((sortColumns[i]))
133 {
134 (sortColumns, i, 1);
135 }
136 }
137
138 return (",", sortColumns).Replace(",,", ",").TrimStart(",".ToCharArray());
139
140 }
141 /**//// <summary>
142 /// Get the current expression to sort the selected column
143 /// </summary>
144 protected void SearchSortExpression(string[] sortColumns, string sortColumn, out string sortOrder, out int sortOrderNo)
145 {
146 sortOrder = "";
147 sortOrderNo = -1;
148 for (int i = 0; i < ; i++)
149 {
150 if (sortColumns[i].StartsWith(sortColumn))
151 {
152 sortOrderNo = i + 1;
153 if (AllowMultiColumnSorting)
154 {
155 sortOrder = sortColumns[i].Substring().Trim();
156 }
157 else
158 {
159 sortOrder = ((SortDirection == ) ? "ASC" : "DESC");
160 }
161 }
162 }
163 }
164 /**//// <summary>
165 /// Draw pictures in ascending and descending order
166 /// </summary>
167 protected void DisplaySortOrderImages(string sortExpression, GridViewRow dgItem)
168 {
169 string[] sortColumns = (",".ToCharArray());
170
171 for (int i = 0; i < ; i++)
172 {
173 if ([i]. > 0 && [i].Controls[0] is LinkButton)
174 {
175 string sortOrder;
176 int sortOrderNo;
177 string column = ((LinkButton)[i].Controls[0]).CommandArgument;
178 SearchSortExpression(sortColumns, column, out sortOrder, out sortOrderNo);
179 if (sortOrderNo > 0)
180 {
181 string sortImgLoc = (("ASC") ? SortAscImageUrl : SortDescImageUrl);
182
183 if (sortImgLoc != )
184 {
185 Image imgSortDirection = new Image();
186 = sortImgLoc;
187 [i].(imgSortDirection);
188
189 }
190 else
191 {
192
193 if (AllowMultiColumnSorting)
194 {
195 Literal litSortSeq = new Literal();
196 = ();
197 [i].(litSortSeq);
198
199 }
200 }
201 }
202 }
203 }
204
205 }
206 #endregion
207 }