做了一個簡單的分頁功能,入門15天小白,大佬勿噴。分頁主要是根據當前頁面去數據庫裏取當前頁面要展示的幾條內容,當然,你也可以全部取出來,那就只是一個“假分頁”,要多少取多少是分頁的精髓所在,這極大的減輕了數據庫的壓力,並且前端更加美觀易於操作。
首先,實現類分頁功能需要的參數就是一頁顯示多少行,處於哪一頁,當然,這個一頁顯示多少行可以後臺定義,也可以由前臺傳值過來,返回的結果是一共是多少頁,還有當前頁的內容,然後去前臺綁定。由於我的是在系統裏,所以我還有個參數userid,先上代碼:
這裏只提供一下實現類代碼,也就是個方法,給大家提供個思路,前端的話大家可以自由發揮。大家要的話我也可以貼出來。
//實現類實現分頁功能,pageindex是當前處於第幾頁,從前臺傳過來的
public QueryPageModel<PaperInfo> ShowPaperList(long UserId,int pageindex)
{
PaperInfo showresult = new PaperInfo();
//底下這個a就是一頁多少行 也就是row
int a = 5;
//計算一下總行數x
int x =(from paperinfo in Context.PaperInfo where paperinfo.UserId == UserId select paperinfo ).Count();
//最後返回的r或者r+1的意思是總頁數
int r =x/a;
//r+1== pageindex這說明現在正處於最後一頁,並且最後一頁不是“滿的”(也就是說最後一頁不足五行),這時從數據庫裏取數據需要算一下這一頁要多少行,並且最後返回的總頁數都是r+1(這個就不多說了,至於爲啥是r+1,除法取整原理)
if (r + 1 == pageindex) {
List<PaperInfo> list = (from paperinfo in Context.PaperInfo where paperinfo.UserId == UserId orderby paperinfo.SubmitTime select paperinfo).Skip(a*pageindex-a).Take(x-a*pageindex+a).ToList();
QueryPageModel<PaperInfo> model = new QueryPageModel<PaperInfo>() { Models = list, Total = r+1 };
return model;
}
//這裏else說明要不現在不是處於最後一頁,要不就是處於最於最後一頁並且最後一頁是滿的,也就是說明處於一個滿的頁面上,這時從數據庫裏取數據都是一樣的,因爲都是取a行,但是返回的總頁數不一定一樣,因爲可能最後一頁不是滿的,此時就要r+1,所以又分了兩種情況
else {
//這裏是最後一頁是滿的情況,總頁數就等於r
if (x % a == 0) {
List<PaperInfo> list = (from paperinfo in Context.PaperInfo where paperinfo.UserId == UserId orderby paperinfo.SubmitTime select paperinfo).Skip(a * pageindex - a).Take(a).ToList();
QueryPageModel < PaperInfo > model = new QueryPageModel<PaperInfo>() { Models = list, Total = r };
return model;
}
//這裏是最後一頁不是滿的情況,此時總頁數等於r+1
else
{
List<PaperInfo> list = (from paperinfo in Context.PaperInfo where paperinfo.UserId == UserId orderby paperinfo.SubmitTime select paperinfo).Skip(a * pageindex - a).Take(a).ToList();
QueryPageModel < PaperInfo > model = new QueryPageModel<PaperInfo>() { Models = list, Total = r + 1 };
return model;
}
}
}
只給大家做個參考,提供一個思路,有什麼建議歡迎提出,我是小白,大佬們輕噴。