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

作者分享在asp.net mvc 2.0项目中使用MvcPager分页控件的经历。使用时发现找不到ToPagedList方法,分析是因项目未用Linq,无List<T>集合扩展方法。下载源码后,通过重载扩展方法支持List<T>的分页转换,项目测试可用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

 

做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 ,字面理解肯定就是它啦;打开看果然如此:

 

 

ExpandedBlockStart.gif代码
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>的转换。于是乎也不管类名规不规范了,加了下面代码:

 

 

ExpandedBlockStart.gif代码
 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还是大有人用啊。所以还是得考虑进去啊。(如有不对,欢迎指证,发现已晚,马上下架)

转载于:https://www.cnblogs.com/assion/archive/2010/06/25/1765384.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值