• asp.net mvc 分页控件 MvcPager修改;使用范围增大


    其实也没什么,就是记录下来和大家分享下。

    做asp.net mvc 2.0 的项目,肯定要用到分页功能了,上网搜了几下。偶然间发现MvcPager分页控件,感觉要用的功能都有了非常喜欢啊。(PS:写这个控件的哥们是个个听力有障碍的残疾人,在此敬佩一下,视早日康复)

    于是乎查看了一下使用方法,很简单,如下:

    在自己的linq查询集合上.ToPagedList(pageIndex,pageSize)即可,果然很方便。马上放到项目中使用,这时悲剧了。找不到ToPagedList(***)方法。分析原因ToPagedList应该是个扩展方法。我项目中没有用到Linq,查询全部是基本的ado.net reader返回的List<T>集合。感觉问题肯定出在这里。没有List<T>集合也就是IEnumerable<T>等的扩展方法。于是乎上网搜了下MvcPager源码,哈哈。在codeplex看到了。感谢cnblogs、csdn、msdn、非诚勿扰啊。开源的,我顶开源啊。哈哈。

    接下来就是下载了源码,很小。打开项目一眼就看到了一个类:PageLinqExtensions.cs ,字面理解肯定就是它啦;打开看果然如此:

    代码
    public static class PageLinqExtensions
    {
            
    public static PagedList<T> ToPagedList<T>
                (
                    
    this IQueryable<T> allItems,
                    
    int pageIndex,
                    
    int pageSize
                )
            {
                
    if (pageIndex < 1)
                    pageIndex 
    = 1;
                var itemIndex 
    = (pageIndex-1* pageSize;
                var pageOfItems 
    = allItems.Skip(itemIndex).Take(pageSize);
                var totalItemCount 
    = allItems.Count();
                
    return new PagedList<T>(pageOfItems, pageIndex, pageSize, totalItemCount);
            }
    }

    看这个扩展方法 ToPagedList<T>里面的类型参数,IQueryable<T>没错了,所以不支持List<T>的转换。于是乎也不管类名规不规范了,加了下面代码:

    代码
     public static PagedList<T> ToPagedList<T>(this IEnumerable<T> allItems,int pageIndex,int pageSize)
            {
                pageIndex
    =pageIndex<1?1:pageIndex;
                var itemIndex
    =(pageIndex-1)*pageSize;
                var pageOfItems 
    = allItems.Skip(itemIndex).Take(pageSize);
                var totalItemCount 
    = allItems.Count();
                
    return new PagedList<T>(pageOfItems, pageIndex, pageSize, totalItemCount);
            }

    重载了一个扩展方法,类型参数为IEnumerable<T>,这个重载用来支持List<T>的ToPagedList(***)分页转换。到此完事。项目测试可用。

    PS:虽然现在Linq,Entity Framework 啥的越来越流行了,但是以前的ado.net还是大有人用啊。所以还是得考虑进去啊。(如有不对,欢迎指证,发现已晚,马上下架)

  • 相关阅读:
    免费的编程中文书籍索引
    整理书签博客和文章
    【De8ug玩docker】-Docker常用命令操作
    Linux中的那些英文缩写和她的含义们
    Docker和DevOps是找工作必备技能
    【De8ug玩docker】-命令行只显示-bash-4.1#
    应该知道的Linux技巧
    阿里云服务器linux(centos)常用命令
    jQuery运维开发之第十七天
    js+dom开发第十六天
  • 原文地址:https://www.cnblogs.com/assion/p/1765384.html
Copyright © 2020-2023  润新知