三层结构中用ObjectDataSource绑定业务业务逻辑层后 实现的GridView排序代码 用到了排序接口IComparer
重点: 最后不要忘了在表示层中ObjectDataSource指定排序的参数名属性:SortParameterName="sortExpression"
重点: 最后不要忘了在表示层中ObjectDataSource指定排序的参数名属性:SortParameterName="sortExpression"
1
//排序 重点IComparer接口的使用
2
public class AuthorComparer : IComparer<Author>
3
{
4
private string _sortColumn;
5
private bool _reverse;
6
//自定义构造函数
7
public AuthorComparer(string sortExpression)
8
{
9
//sortExpression指定最后区域的字符串是否
10
//和EndsWith里的参数一致,是则返回true;
11
_reverse = sortExpression.ToLowerInvariant().EndsWith(" desc");
12
if (_reverse)
13
{
14
//如果是降续排列 则去掉降续排列(也就是去掉后面的5个字符串)
15
//改为没有,某人为升序的排列
16
_sortColumn = sortExpression.Substring(0, sortExpression.Length - 5);
17
}
18
else
19
{
20
_sortColumn = sortExpression;
21
}
22
}
23
public int Compare(Author a, Author b)
24
{
25
int retVal = 0;
26
switch (_sortColumn)
27
{
28
case "ID":
29
retVal = string.Compare(a.ID, b.ID, StringComparison.InvariantCultureIgnoreCase);
30
break;
31
case "FirstName":
32
retVal = string.Compare(a.FirstName, b.FirstName, StringComparison.InvariantCultureIgnoreCase);
33
break;
34
case "LastName":
35
retVal = string.Compare(a.LastName, b.LastName, StringComparison.InvariantCultureIgnoreCase);
36
break;
37
case "State":
38
retVal = string.Compare(a.State, b.State, StringComparison.InvariantCultureIgnoreCase);
39
break;
40
}
41
return (retVal * (_reverse ? -1 : 1));
42
}
43
}
44
//排序 重点IComparer接口的使用2
public class AuthorComparer : IComparer<Author>3
{4
private string _sortColumn;5
private bool _reverse;6
//自定义构造函数7
public AuthorComparer(string sortExpression)8
{9
//sortExpression指定最后区域的字符串是否10
//和EndsWith里的参数一致,是则返回true;11
_reverse = sortExpression.ToLowerInvariant().EndsWith(" desc");12
if (_reverse)13
{14
//如果是降续排列 则去掉降续排列(也就是去掉后面的5个字符串)15
//改为没有,某人为升序的排列16
_sortColumn = sortExpression.Substring(0, sortExpression.Length - 5);17
}18
else19
{20
_sortColumn = sortExpression;21
}22
}23
public int Compare(Author a, Author b)24
{25
int retVal = 0;26
switch (_sortColumn)27
{28
case "ID":29
retVal = string.Compare(a.ID, b.ID, StringComparison.InvariantCultureIgnoreCase);30
break;31
case "FirstName":32
retVal = string.Compare(a.FirstName, b.FirstName, StringComparison.InvariantCultureIgnoreCase);33
break;34
case "LastName":35
retVal = string.Compare(a.LastName, b.LastName, StringComparison.InvariantCultureIgnoreCase);36
break;37
case "State":38
retVal = string.Compare(a.State, b.State, StringComparison.InvariantCultureIgnoreCase);39
break;40
}41
return (retVal * (_reverse ? -1 : 1));42
}43
}44



浙公网安备 33010602011771号