上次寫了篇:老生常談:Asp.net Mvc 3 載入cshtml檔案建立自訂分頁
遇到的問題: 單純的資料列表,分頁ok,但是加上其它外界因素,常見的如 查詢,排序,分頁如何跟它們結合呢?
分頁如何和查詢,排序結合?
我的思路,查詢、排序為主,分頁為次。
1.查詢條件改變,頁碼重新載入,當前頁面從1重新開始
2. 查詢後產生的頁碼儲存查詢對應的參數和值,從而類比查詢+分頁的效果。
拓展分頁控制項,使其可以包含其它參數。
常見的傳參方式: Url傳值,Form傳值
常見的資料格式: Text 和 json
更改原有設計:
DataType 參數類型 text/json
PageModel 頁碼類包含:
PageIndex 頁碼索引
PageText 頁碼顯示文本
Pager 分頁控制項類
PagerTemp 分頁控制項載入cshtml或者ascx名稱
PagerID 分頁控制項ID
PagerShow 是否顯示分頁
PageSize 每頁顯示的記錄數目
CurPage 當前頁的索引
PageNum 最少顯示的頁碼數目[位移量]
Totalpage 總頁數
TotalSize 總記錄資料
List<PageModel> 頁碼列表
ControllerName 控制器名稱
ActionName 動作名稱
DataType 資料格式
Dictionary<string,string> 參數列表
PageData 資料
PageHelper 分頁控制項產生類,拓展HtmlHelper用於建立分頁控制項
public static MvcHtmlString Pager(this HtmlHelper helper,
string pagerId, //分頁控制項Id
int curPage, //當前頁碼
int totalSize, //總記錄數
string pagerTemp = "_PagerTemp", //分頁控制項範本
int pageSize = 10, //每頁顯示10條
int pageNum = 5, //顯示的頁碼數目
string datatype = "text", //預設是Url傳值
Dictionary<string, string> parameters = null //參數列表
){
//建立分頁控制項方法
}
_PageTemp 分頁控制項顯示的模板
總結: 美中不足的一點是 查詢或者過濾條件改變的時候,要清空 curPage 為 1
點擊下載