一個簡單的分頁功能的實現(.net開發 數據庫使用EF 語句linq)

做了一個簡單的分頁功能,入門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;
                }
               
            }
            
        }


只給大家做個參考,提供一個思路,有什麼建議歡迎提出,我是小白,大佬們輕噴。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章