三层结构中用ObjectDataSource绑定业务业务逻辑层后 实现的GridView排序代码 用到了排序接口IComparer

重点: 最后不要忘了在表示层中ObjectDataSource指定排序的参数名属性:SortParameterName="sortExpression"

 1      //排序 重点IComparer接口的使用
 2public 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
posted on 2006-12-22 22:39  小角色  阅读(338)  评论(0)    收藏  举报