基于layPage插件實(shí)現(xiàn)兩種分頁(yè)方式淺析
最近在開(kāi)發(fā)過(guò)程中經(jīng)常用到分頁(yè),今天擠出些時(shí)間來(lái)捋一捋自己的經(jīng)驗(yàn)
在web開(kāi)發(fā)中,一般顯示數(shù)據(jù)列表頁(yè)時(shí),我們會(huì)用到分頁(yè)控件來(lái)顯示數(shù)據(jù)。采用分頁(yè)一般基于兩種不同的需求,一種是數(shù)據(jù)量不算很大,但是在頁(yè)面展示又顯得過(guò)長(zhǎng),看起來(lái)很不舒服。一種則是因?yàn)閿?shù)據(jù)量太過(guò)于龐大,無(wú)法一次性去數(shù)據(jù)庫(kù)將數(shù)據(jù)讀取出來(lái),于是采用分頁(yè)的形式去將數(shù)據(jù)分頁(yè)顯示出來(lái)。
前者即所謂的前端分頁(yè),而后者就是服務(wù)端分頁(yè)。
兩者的區(qū)別在于:前端分頁(yè)是將所有數(shù)據(jù)取出,為方便用戶(hù)查看,合理展示數(shù)據(jù)。在前端js上對(duì)數(shù)據(jù)進(jìn)行分頁(yè)。而服務(wù)端分頁(yè)是根據(jù)當(dāng)前頁(yè)面要展示的內(nèi)容,通過(guò)前端傳入的參數(shù),獲取對(duì)應(yīng)頁(yè)面的數(shù)據(jù)進(jìn)行展示。簡(jiǎn)而言之就是前端分頁(yè)是在前端對(duì)數(shù)據(jù)進(jìn)行分頁(yè),服務(wù)端分頁(yè)這是在后臺(tái)對(duì)數(shù)據(jù)進(jìn)行分頁(yè)。
下面分別展示下使用layPage分頁(yè)控件兩者的用法
假設(shè)后臺(tái)返回的數(shù)據(jù)對(duì)象如下:
public class people{ public string name{get;set;}=string.Empty; public int age{get;set;}=0; } //獲取的數(shù)據(jù)是 List<people> plist; //JsonConvert.SerializeObject()為序列化對(duì)象 return Json(JsonConvert.SerializeObject(plist));
1.前端分頁(yè)
//引用分頁(yè)控件 <link rel="stylesheet" type="text/css" href="/content/H-UI.Admin/lib/laypage/1.2/skin/laypage.css" /> <script type="text/javascript" src="~/content/H-UI.Admin/lib/laypage/1.2/laypage.js"></script> <script type="text/javascript"> $(function(){ //獲取數(shù)據(jù) $.post("/liveajax/getData",function(data){ var loaddata=jQuery.parseJSON(data);//將后臺(tái)獲取的json對(duì)象轉(zhuǎn)換為數(shù)組 loadData(loaddata); }) }) function loadData(data){ var nums = 10; //每頁(yè)出現(xiàn)的數(shù)量 //模擬渲染 var render = function(data, curr){ var arr = [],thisData = data.concat().splice(curr*nums-nums, nums); for(var i = 0; i < thisData.length; i++){ var str ='<tr><td>thisData[i].name</td><td>thisData[i].age</td></tr>';//拼裝一行數(shù)據(jù) arr.push(str); } return arr.join(''); }; laypage({ cont: 'page'//分頁(yè)顯示的位置 ,pages: Math.ceil(data.length/nums) //得到總頁(yè)數(shù) ,jump: function(obj){ document.getElementById('pageBody').innerHTML = render(data, obj.curr);//pageBody:分頁(yè)內(nèi)容的位置 } }); } </script>
2.服務(wù)端分頁(yè):前端傳入當(dāng)前頁(yè)碼、顯示數(shù)量等請(qǐng)求數(shù)據(jù),后臺(tái)數(shù)據(jù)庫(kù)根據(jù)分頁(yè)數(shù)據(jù)獲取對(duì)應(yīng)的數(shù)據(jù)。即數(shù)據(jù)庫(kù)分頁(yè)查詢(xún)
//引用分頁(yè)控件 <link rel="stylesheet" type="text/css" href="/content/H-UI.Admin/lib/laypage/1.2/skin/laypage.css" /> <script type="text/javascript" src="~/content/H-UI.Admin/lib/laypage/1.2/laypage.js"></script> <script type="text/javascript"> //@ViewBag.TotalCount為數(shù)據(jù)總數(shù),在初始化時(shí)就先獲取 $(function () { resetPage(@ViewBag.TotalCount, 1); }); //約定:queryPara(參數(shù))、pageQuery(查詢(xún)方法)、resetPage(重置分頁(yè)) //查詢(xún)參數(shù) var queryPara = { page:1,//頁(yè)碼 psize:10,//行數(shù) }; //分頁(yè)查詢(xún) function pageQuery() { var queryUrl = ‘/liveajax/getData2'; $.post(queryUrl, queryPara, function (data) { $("table.dataTable tbody").html(data);//這里直接可以將對(duì)象拼裝,或者使用分部視圖,將data作為model參數(shù)傳入分部式圖 resetPage(@ViewBag.TotalCount, queryPara.page); }); } //重置分頁(yè)(跳轉(zhuǎn)分頁(yè)) function resetPage(recordCount, pageIndex) { var pages = recordCount % queryPara.psize == 0 ? recordCount / queryPara.psize : recordCount / queryPara.psize + 1; laypage({ cont: "page", //容器。值支持id名、原生dom對(duì)象,jquery對(duì)象?!救缭撊萜鳛椤浚?lt;div id="page1"></div> pages: pages, //通過(guò)后臺(tái)拿到的總頁(yè)數(shù) curr: pageIndex, //當(dāng)前頁(yè) jump: function (obj, first) { //觸發(fā)分頁(yè)后的回調(diào) if (!first) { //點(diǎn)擊跳頁(yè)觸發(fā)函數(shù)自身,并傳遞當(dāng)前頁(yè):obj.curr queryPara.page = obj.curr; pageQuery(); } } }); } </script>
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- laypage.js分頁(yè)插件使用方法詳解
- layui2.0使用table+laypage實(shí)現(xiàn)真分頁(yè)
- thinkPHP3.2.3結(jié)合Laypage實(shí)現(xiàn)的分頁(yè)功能示例
- thinkPHP5使用laypage分頁(yè)插件實(shí)現(xiàn)列表分頁(yè)功能
- 基于LayUI分頁(yè)和LayUI laypage分頁(yè)的使用示例
- VUEJS實(shí)戰(zhàn)之利用laypage插件實(shí)現(xiàn)分頁(yè)(3)
- laypage分頁(yè)控件使用實(shí)例詳解
- js多功能分頁(yè)組件layPage使用方法詳解
- laypage前端分頁(yè)插件實(shí)現(xiàn)ajax異步分頁(yè)
- laypage+SpringMVC實(shí)現(xiàn)后端分頁(yè)
相關(guān)文章
JavaScript異步隊(duì)列進(jìn)行try?catch時(shí)的問(wèn)題解決
這篇文章主要介紹了JavaScript異步隊(duì)列進(jìn)行try?catch時(shí)的問(wèn)題解決,文章圍繞主題展開(kāi)詳細(xì)的的相關(guān)內(nèi)容介紹,需要的朋友可以參考一下2022-07-07JavaScript解析及序列化JSON的方法實(shí)例分析
這篇文章主要介紹了JavaScript解析及序列化JSON的方法,結(jié)合實(shí)例形式分析javascript針對(duì)json格式數(shù)據(jù)的解析、序列化等相關(guān)操作技巧,需要的朋友可以參考下2019-01-01bootstrap-datetimepicker實(shí)現(xiàn)只顯示到日期的方法
這篇文章主要介紹了bootstrap-datetimepicker實(shí)現(xiàn)只顯示到日期的方法,涉及bootstrap插件相關(guān)操作的設(shè)置與使用技巧,需要的朋友可以參考下2016-11-11JS實(shí)現(xiàn)頁(yè)面內(nèi)跳轉(zhuǎn)的簡(jiǎn)單代碼
這篇文章主要介紹了JS實(shí)現(xiàn)頁(yè)面內(nèi)跳轉(zhuǎn)的簡(jiǎn)單代碼,需要的朋友可以參考下2017-09-09javaScript對(duì)文字按照拼音排序?qū)崿F(xiàn)代碼
這篇文章主要介紹了javaScript對(duì)文字按照拼音排序?qū)崿F(xiàn)代碼,有需要的朋友可以參考一下2013-12-12PHP實(shí)現(xiàn)基于Redis的MessageQueue隊(duì)列封裝操作示例
這篇文章主要介紹了PHP實(shí)現(xiàn)基于Redis的MessageQueue隊(duì)列封裝操作,結(jié)合實(shí)例形式分析了Redis的PHP消息隊(duì)列封裝與使用相關(guān)操作技巧,需要的朋友可以參考下2019-02-02JavaScript實(shí)現(xiàn)LI列表數(shù)據(jù)綁定的方法
這篇文章主要介紹了JavaScript實(shí)現(xiàn)LI列表數(shù)據(jù)綁定的方法,可實(shí)現(xiàn)綁定Li列表項(xiàng)對(duì)應(yīng)數(shù)值項(xiàng)的功能,涉及javascript鼠標(biāo)onmousemove、onmouseout及onclick等事件的相關(guān)使用技巧,需要的朋友可以參考下2015-08-08