用jquery datatables实现页面分页,前端分页,后端分页
2016-11-25 19:50
495 查看
这两天搞了点网页上的分页,真的是搞得欲仙欲死,现在也只能说是搞了个入门的水平吧,现在就来写下这几天的收获。
用的是datatables的框架,先来个框架的地址:https://datatables.net/,本人理解也不是很深,直接结合代码来解释下。
现在还没有写完,所以不能上传资源,现在只能说关键部分。
首先一个xml文件:
由于我是本地的js与css,所以给你们链接,链接不是新的,所以可以去下载最新的https://datatables.net/download/index
然后可以去用相应的js与css。上面就是前端的分页。但是需要注意的是前段接受的数据类型是
是这种类型的,所以后端传递数据的时候要封装一下。下面是封装的类:
Pagination.java:
上面就是封装的类型的类,需要注意的是list中的泛型就是你要传递的类的对象。
后端分页:
后端分页就是说前段要把分页的起始位置传递过去,也就是start,这个是框架中封装好的,所以我们需要知道前段传递的参数都是什么。
上面就是前段传递过去的参数,我们在后端要接收一下这个数据,里面关键的我们需要start,起始位置,以及length,这个是页面的个数,所以我们要在后端封装一个类来接受这些参数。当然还有draw,是刷新的次数,这个我们不用管。
TableModelVO.java:
package ndm.miniwms.vo;
public class TableModelVO {
private Integer draw;
private Integer start;
private Integer length;
public Integer getDraw() {
return draw;
}
public void setDraw(Integer draw) {
this.draw = draw;
}
public Integer getStart() {
return start;
}
public void setStart(Integer start) {
this.start = start;
}
public Integer getLength() {
return length;
}
public void setLength(Integer length) {
this.length = length;
}
}
接受到参数接下来就是怎么用了。
其他的我就不写了,分页的在前面都有写,这个项目,过段时间我会上传资源。
用的是datatables的框架,先来个框架的地址:https://datatables.net/,本人理解也不是很深,直接结合代码来解释下。
现在还没有写完,所以不能上传资源,现在只能说关键部分。
首先一个xml文件:
<head> <meta charset="UTF-8"> <title>jquery DataTables插件自定义分页ajax实现</title> <link href="../static/css/bootstrap.min.css" rel="stylesheet" media="screen"> <link href="../static/css/dataTables.bootstrap.min.css" rel="stylesheet" media="screen"> <link href="../static/css/jquery.dataTables.min.css" rel="stylesheet" media="screen"> </head> <body> <div class="row-fluid"> <h3>JQuery DataTables插件自定义分页Ajax实现</h3> <table id="example" class="display" width="100%"> <thead> <tr> <th>ID</th> <th>创建时间</th> <th>别名</th> </tr> </thead> <tfoot> <tr> <th>ID</th> <th>创建时间</th> <th>别名</th> </tr> </tfoot> </table> </div> <script type="text/javascript"> var lang = { "sProcessing" : "处理中...", "sLengthMenu" : "每页 _MENU_ 项", "sZeroRecords" : "没有匹配结果", "sInfo" : "当前显示第 _START_ 至 _END_ 项,共 _TOTAL_ 项。", "sInfoEmpty" : "当前显示第 0 至 0 项,共 0 项", "sInfoFiltered" : "(由 _MAX_ 项结果过滤)", "sInfoPostFix" : "", "sSearch" : "搜索:", "sUrl" : "", "sEmptyTable" : "表中数据为空", "sLoadingRecords" : "载入中...", "sInfoThousands" : ",", "oPaginate" : { "sFirst" : "首页", "sPrevious" : "上页", "sNext" : "下页", "sLast" : "末页", "sJump" : "跳转" }, "oAria" : { "sSortAscending" : ": 以升序排列此列", "sSortDescending" : ": 以降序排列此列" } }; //初始化表格 // $.get('/MiniWms/company/page', function(data) { // var table = $("#example").DataTable({ // data : data, // "columns" : [ { // "data" : "id" // }, { // "data" : "created" // }, { // "data" : "anothername" // } ] // }); // }) $('#example').DataTable({ // "ajax" : { // url:"/MiniWms/company/all", // dataSrc:function(data){return data} // }, "processing": true, "serverSide": true, "ajax": '/MiniWms/company/page', "columns" : [ {//data的字段与你后端传递过来的要对应 "data" : "id" }, { "data" : "created" }, { "data" : "anothername" } ], // "columnDefs": [ // { // "targets": [3], // "data": "anothername", // "render": function(data, type, full) { // return "<a href='/MiniWms/company/page?=" + data + "'>Update</a>"; // } // } // ] }); </script> </body>
由于我是本地的js与css,所以给你们链接,链接不是新的,所以可以去下载最新的https://datatables.net/download/index
<link href="http://cdn.bootcss.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet" media="screen"> <link href="http://cdn.bootcss.com/datatables/1.10.11/css/dataTables.bootstrap.min.css" rel="stylesheet" media="screen"> <link href="http://cdn.bootcss.com/datatables/1.10.11/css/jquery.dataTables.min.css" rel="stylesheet" media="screen">
<script src="http://cdn.bootcss.com/datatables/1.10.11/js/jquery.js"></script> <script src="http://cdn.bootcss.com/bootstrap/3.3.6/js/bootstrap.min.js"></script> <script src="http://cdn.bootcss.com/datatables/1.10.11/js/jquery.dataTables.min.js"></script> <script src="http://cdn.bootcss.com/datatables/1.10.11/js/dataTables.bootstrap.min.js"></script>
然后可以去用相应的js与css。上面就是前端的分页。但是需要注意的是前段接受的数据类型是
{draw: null, recordsTotal: , recordsFiltered: ,data[]}
是这种类型的,所以后端传递数据的时候要封装一下。下面是封装的类:
Pagination.java:
package ndm.miniwms.vo; import java.util.List; public class Pagination<T> { private Integer draw; private Integer recordsTotal; private Integer recordsFiltered; private List<T> data; public Integer getDraw() { return draw; } public void setDraw(Integer draw) { this.draw = draw; } public Integer getRecordsTotal() { return recordsTotal; } public void setRecordsTotal(Integer recordsTotal) { this.recordsTotal = recordsTotal; } public Integer getRecordsFiltered() { return recordsFiltered; } public void setRecordsFiltered(Integer recordsFiltered) { this.recordsFiltered = recordsFiltered; } public List<T> getData() { return data; } public void setData(List<T> data) { this.data = data; } }
上面就是封装的类型的类,需要注意的是list中的泛型就是你要传递的类的对象。
后端分页:
后端分页就是说前段要把分页的起始位置传递过去,也就是start,这个是框架中封装好的,所以我们需要知道前段传递的参数都是什么。
draw:1 columns[0][data]:id columns[0][name]: columns[0][searchable]:true columns[0][orderable]:true columns[0][search][value]: columns[0][search][regex]:false columns[1][data]:created columns[1][name]: columns[1][searchable]:true columns[1][orderable]:true columns[1][search][value]: columns[1][search][regex]:false columns[2][data]:anothername columns[2][name]: columns[2][searchable]:true columns[2][orderable]:true columns[2][search][value]: columns[2][search][regex]:false order[0][column]:0 order[0][dir]:asc start:0 length:10 search[value]: search[regex]:false
上面就是前段传递过去的参数,我们在后端要接收一下这个数据,里面关键的我们需要start,起始位置,以及length,这个是页面的个数,所以我们要在后端封装一个类来接受这些参数。当然还有draw,是刷新的次数,这个我们不用管。
TableModelVO.java:
package ndm.miniwms.vo;
public class TableModelVO {
private Integer draw;
private Integer start;
private Integer length;
public Integer getDraw() {
return draw;
}
public void setDraw(Integer draw) {
this.draw = draw;
}
public Integer getStart() {
return start;
}
public void setStart(Integer start) {
this.start = start;
}
public Integer getLength() {
return length;
}
public void setLength(Integer length) {
this.length = length;
}
}
接受到参数接下来就是怎么用了。
@RequestMapping(value="/company/page",method = RequestMethod.GET) @ResponseBody public Pagination<CompanyDetails> selectTab(TableModelVO tableModelVO1){ int a = tableModelVO1.getStart()/tableModelVO1.getLength()+1; System.out.println(a); Pagination<CompanyDetails> pagination = new Pagination<>(); TableModelVO tableModelVO = new TableModelVO(); tableModelVO.setStart(a); tableModelVO.setLength(tableModelVO1.getLength()); pagination.setData(companyService.selectTab(tableModelVO)); pagination.setDraw(tableModelVO.getDraw()); // pagination.setRecordsTotal(companyService.selectTab(tableModelVO).size()); pagination.setRecordsFiltered(companyService.all().size()); pagination.setRecordsTotal(companyService.all().size()); // return new ResponseEntity<Pagination>(new Pagination(), HttpStatus.OK); return pagination; }
其他的我就不写了,分页的在前面都有写,这个项目,过段时间我会上传资源。
相关文章推荐
- asp.net 前端跟后端通过接口调用实现数据交互(含分页)
- Sharepoint页面项目展示画廊纯前端实现,后端用list/library简单维护
- [后端人员耍前端系列]KnockoutJs篇:使用KnockoutJs+Bootstrap实现分页
- GoEasy实现后端向前端页面的推送
- JSP页面自动下载cab包安装Active-ocx-dll控件,前端后端实现
- bootstrap table + spring + springmvc + mybatis 实现从前端到后端的表格分页
- 一个完全由后端人员写的前端页面怎么实现前后端分离?
- 前端之实现页面分页
- [后端人员耍前端系列]KnockoutJs篇:使用KnockoutJs+Bootstrap实现分页
- 前端通过Ajax请求从后台返回数据到页面显示,实现分页功能
- 前端使用AngularJS的$resource,后端ASP.NET Web API,实现分页、过滤
- php+ajax 实现web页面无闪烁刷新 页面前端和后端交互
- ThinkPHP快速实现数据分页(前端/后端分离)
- 前端提示“页面正在载入”的功能实现
- JQUERY+PHP实现无刷新页面分页 jq页面不刷新完成分页例子
- Asp.net同一页面内容分页实现
- 用Ajax实现分页和删除操作的jsp页面源代码
- 仿谷歌,百度查询页面技术实现分页分析
- JS+Ajax+Jquery实现页面无刷新分页以及分组 超强的实现 加上你的CSS完全可以与EXT媲美哦