asp.net mvc 分頁控制項 MvcPager修改;使用範圍增大

來源:互聯網
上載者:User

其實也沒什麼,就是記錄下來和大家分享下。

 

做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還是大有人用啊。所以還是得考慮進去啊。(如有不對,歡迎指證,發現已晚,馬上下架)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.