微軟提供了PagedList分頁,相信大家在網上也能搜尋一大堆關于pagedList用法的部落格,論壇。但是,在使用的過程中一不小心,就會掉入pagedList某種正常用法的陷阱。
代碼如下:
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIml2ZuUWYxYmZhR2MiNjY3QGMjFGZlNTOzUWZjJGO2YzM1MWMfdWbp9CXt92Yu4GZjlGbh5SZslmZxl3Lc9CX6MHc0RHaiojIsJye.gif)
View Code
前端HTML
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIml2ZuUWYxYmZhR2MiNjY3QGMjFGZlNTOzUWZjJGO2YzM1MWMfdWbp9CXt92Yu4GZjlGbh5SZslmZxl3Lc9CX6MHc0RHaiojIsJye.gif)
上述的用法很簡單,直接查詢所有資料,然後利用pagedList提供的HTML helper 進行分頁。
其效果圖也不錯,如下:
上述中紅色字型提到:該用法需要一次性查詢表中所有資料,試問:如果您的資料表中有百萬甚至千萬條資料,那麼這種用法效率是不是将會很低?
說來也慚愧,當初用的時候,我也想到了這個弊端,但是一直沒去想辦法解決這個問題。
還好,pagedList還提供了另外一種方法:StaticPagedList 方法
StaticPagedList 方法需要提供四個參數,分别為:資料源 目前頁碼 每頁條數 以及總記錄數
如上述所言,我們在查詢的過程中不能一次性查詢所有資料,因為這樣做效率很低。而現在我們要做的就是查詢目前頁碼的 10 條資料(假設每頁展示十條資料)及傳回資料表中的總記錄數。
那麼我們該怎麼做呢?
方法其實很多,在我的項目中,我用到一個存儲過程<不管你用什麼,你現在要做的就是傳回:目前頁碼的 10 條資料,及資料表總記錄條數>
有了存儲過程,我們就要用EF執行這個存儲過程,怎麼執行呢?
接口層:
執行層:繼承接口
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIml2ZuUWYxYmZhR2MiNjY3QGMjFGZlNTOzUWZjJGO2YzM1MWMfdWbp9CXt92Yu4GZjlGbh5SZslmZxl3Lc9CX6MHc0RHaiojIsJye.gif)
實體Model層:
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIml2ZuUWYxYmZhR2MiNjY3QGMjFGZlNTOzUWZjJGO2YzM1MWMfdWbp9CXt92Yu4GZjlGbh5SZslmZxl3Lc9CX6MHc0RHaiojIsJye.gif)
控制器代碼:
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIml2ZuUWYxYmZhR2MiNjY3QGMjFGZlNTOzUWZjJGO2YzM1MWMfdWbp9CXt92Yu4GZjlGbh5SZslmZxl3Lc9CX6MHc0RHaiojIsJye.gif)
UI/View層
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIml2ZuUWYxYmZhR2MiNjY3QGMjFGZlNTOzUWZjJGO2YzM1MWMfdWbp9CXt92Yu4GZjlGbh5SZslmZxl3Lc9CX6MHc0RHaiojIsJye.gif)
上述代碼已經很齊全了,大家可以自行嘗試,需要說明兩點:
view層HTML代碼:
至此,整個pagedList分頁就完畢了。
這樣查詢提升了效率。
我的分頁效果圖如下:
由圖可知,我的資料表共有:151303條記錄,如果采用每次都加載所有資料,效率是何其低可想而知。
呵呵,截止到這兒,pagedlist分頁也就講完了!
現在,我們提出新的要求:結合查詢,根據學生姓名和學号進行模糊查詢
其後端變更如下:
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIml2ZuUWYxYmZhR2MiNjY3QGMjFGZlNTOzUWZjJGO2YzM1MWMfdWbp9CXt92Yu4GZjlGbh5SZslmZxl3Lc9CX6MHc0RHaiojIsJye.gif)
前端如下:
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIml2ZuUWYxYmZhR2MiNjY3QGMjFGZlNTOzUWZjJGO2YzM1MWMfdWbp9CXt92Yu4GZjlGbh5SZslmZxl3Lc9CX6MHc0RHaiojIsJye.gif)
上圖為變更處、
運作效果:
@陳卧龍的部落格