基于layPage插件实现两种分页方式浅析


Posted in Javascript onJuly 27, 2019

最近在开发过程中经常用到分页,今天挤出些时间来捋一捋自己的经验

在web开发中,一般显示数据列表页时,我们会用到分页控件来显示数据。采用分页一般基于两种不同的需求,一种是数据量不算很大,但是在页面展示又显得过长,看起来很不舒服。一种则是因为数据量太过于庞大,无法一次性去数据库将数据读取出来,于是采用分页的形式去将数据分页显示出来。

前者即所谓的前端分页,而后者就是服务端分页。

两者的区别在于:前端分页是将所有数据取出,为方便用户查看,合理展示数据。在前端js上对数据进行分页。而服务端分页是根据当前页面要展示的内容,通过前端传入的参数,获取对应页面的数据进行展示。简而言之就是前端分页是在前端对数据进行分页,服务端分页这是在后台对数据进行分页。

下面分别展示下使用layPage分页控件两者的用法
假设后台返回的数据对象如下:

public class people{
 public string name{get;set;}=string.Empty;
 public int age{get;set;}=0;
}
//获取的数据是
List<people> plist;
//JsonConvert.SerializeObject()为序列化对象
return Json(JsonConvert.SerializeObject(plist));

1.前端分页

//引用分页控件
<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(){
//获取数据
 $.post("/liveajax/getData",function(data){
 var loaddata=jQuery.parseJSON(data);//将后台获取的json对象转换为数组
 loadData(loaddata);  
 })
})
function loadData(data){
 var nums = 10; //每页出现的数量

 //模拟渲染
 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>';//拼装一行数据
 arr.push(str);
 }
 return arr.join('');
 };
 laypage({
 cont: 'page'//分页显示的位置
 ,pages: Math.ceil(data.length/nums) //得到总页数
 ,jump: function(obj){

 document.getElementById('pageBody').innerHTML = render(data, obj.curr);//pageBody:分页内容的位置
 }
 });
}
</script>

2.服务端分页:前端传入当前页码、显示数量等请求数据,后台数据库根据分页数据获取对应的数据。即数据库分页查询

//引用分页控件
<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为数据总数,在初始化时就先获取
 $(function () {
 resetPage(@ViewBag.TotalCount, 1);
 });

 //约定:queryPara(参数)、pageQuery(查询方法)、resetPage(重置分页)

 //查询参数
 var queryPara = {
 page:1,//页码
 psize:10,//行数
 };
 //分页查询
 function pageQuery() {
 var queryUrl = ‘/liveajax/getData2';
 $.post(queryUrl, queryPara, function (data) {
  $("table.dataTable tbody").html(data);//这里直接可以将对象拼装,或者使用分部视图,将data作为model参数传入分部式图
  resetPage(@ViewBag.TotalCount, queryPara.page);
 });
 }
 //重置分页(跳转分页)
 function resetPage(recordCount, pageIndex) {
 var pages = recordCount % queryPara.psize == 0 ? recordCount / queryPara.psize : recordCount / queryPara.psize + 1;
 laypage({
  cont: "page", //容器。值支持id名、原生dom对象,jquery对象。【如该容器为】:<div id="page1"></div>
  pages: pages, //通过后台拿到的总页数
  curr: pageIndex, //当前页
  jump: function (obj, first) { //触发分页后的回调
  if (!first) { //点击跳页触发函数自身,并传递当前页:obj.curr
   queryPara.page = obj.curr;
   pageQuery();
  }
  }
 });
 }
 </script>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
25个好玩的JavaScript小游戏分享
Apr 22 Javascript
让元素在网页中可拖动示例代码
Aug 13 Javascript
javascript中直接引用Microsoft的COM生成Word
Jan 20 Javascript
jquery easyui 对于开始时间小于结束时间的判断示例
Mar 22 Javascript
jquery禁用右键示例
Apr 28 Javascript
浅谈javascript的Touch事件
Sep 27 Javascript
JavaScript原生xmlHttp与jquery的ajax方法json数据格式实例
Dec 04 Javascript
node.js入门实例helloworld详解
Dec 23 Javascript
javascript添加前置0(补零)的几种方法
Jan 05 Javascript
微信小程序 传值取值的几种方法总结
Jan 16 Javascript
vue 动态修改a标签的样式的方法
Jan 18 Javascript
JavaScript中展开运算符及应用的实例代码
Jan 14 Javascript
基于ssm框架实现layui分页效果
Jul 27 #Javascript
layUI实现前端分页和后端分页
Jul 27 #Javascript
layui实现数据分页功能(ajax异步)
Jul 27 #Javascript
layui实现数据表格table分页功能(ajax异步)
Jul 27 #Javascript
layui实现数据分页功能
Jul 27 #Javascript
layUI实现列表查询功能
Jul 27 #Javascript
Layui实现带查询条件的分页
Jul 27 #Javascript
You might like
ThinkPHP访问不存在的模块跳转到404页面的方法
2014/06/19 PHP
跟我学Laravel之视图 &amp; Response
2014/10/15 PHP
基于swoole实现多人聊天室
2018/06/14 PHP
PHP模版引擎原理、定义与用法实例
2019/03/29 PHP
索趣科技的答案
2007/02/07 Javascript
jQuery 技巧小结
2010/04/02 Javascript
JavaScript字符串对象slice方法入门实例(用于字符串截取)
2014/10/16 Javascript
jQuery中last()方法用法实例
2015/01/06 Javascript
js使用cookie记录用户名的方法
2015/11/26 Javascript
JQuery validate插件验证用户注册信息
2016/05/11 Javascript
jQuery height()、innerHeight()、outerHeight()函数的区别详解
2016/05/23 Javascript
JS实现屏蔽网页右键复制及ctrl+c复制的方法【2种方法】
2016/09/04 Javascript
Bootstrap精简教程中秋大放送
2016/09/15 Javascript
BootStrap组件之进度条的基本用法
2017/01/19 Javascript
React Native预设占位placeholder的使用
2017/09/28 Javascript
vue组件生命周期详解
2017/11/07 Javascript
es6函数中的作用域实例分析
2020/04/18 Javascript
python检测服务器是否正常
2014/02/16 Python
Python中AND、OR的一个使用小技巧
2015/02/18 Python
numpy.array 操作使用简单总结
2019/11/08 Python
基于python爬取有道翻译过程图解
2020/03/31 Python
Python __slots__的使用方法
2020/11/15 Python
如何用Python提取10000份log中的产品信息
2021/01/14 Python
CSS3简单实现照片墙
2014/12/12 HTML / CSS
斯凯奇澳大利亚官网:SKECHERS澳大利亚
2018/03/31 全球购物
PREMIUM-MALL法国:行李、箱包及配件在线
2019/05/30 全球购物
进修护士自我鉴定
2013/10/14 职场文书
自考自我鉴定范文
2013/10/30 职场文书
银行门卫岗位职责
2013/12/29 职场文书
食品行业求职人的自我评价
2014/01/19 职场文书
教师见习报告范文
2014/11/03 职场文书
2015新学期开学寄语
2015/02/26 职场文书
2015年餐厅服务员工作总结
2015/04/23 职场文书
请客吃饭开场白
2015/06/01 职场文书
毕业生登记表班级意见
2015/06/05 职场文书
高三生物教学反思
2016/02/22 职场文书