前端使用datatable分页插件和H-ui框架后端采用ssm框架
1.引入相关js
<script type="text/javascript" src="../resources/common/lib/jquery/1.9.1/jquery.min.js"></script>
<script type="text/javascript" src="../resources/common/lib/layer/2.1/layer.js"></script>
<script type="text/javascript" src="../resources/common/lib/laypage/1.2/laypage.js"></script>
<script type="text/javascript" src="../resources/common/lib/My97DatePicker/WdatePicker.js"></script>
<script type="text/javascript" src="../resources/common/lib/datatables/1.10.0/jquery.dataTables.min.js"></script>
<script type="text/javascript" src="../resources/common/static/h-ui/js/H-ui.js"></script>
<script type="text/javascript" src="../resources/common/static/h-ui.admin/js/H-ui.admin.js"></script>
2.写div
<table class="table table-border table-bordered table-hover table-bg table-sort">
<thead>
<tr class="text-c">
<th width="25"><input type="checkbox" name="" value=""></th>
<th width="80">ID</th>
<th width="100">用户名</th>
<th width="40">性别</th>
<th width="90">手机</th>
<th width="150">邮箱</th>
<th width="">地址</th>
<th width="130">加入时间</th>
<th width="70">状态</th>
<th width="100">操作</th>
</tr>
</thead>
</table>
3.配置datatable
user_list();
function user_list(){
var startTime=$("#datemin").val();
var endTime=$("#datemax").val();
var search=$("#search").val();
$('.table-sort').dataTable({
"aaSorting": [[ 1, "desc" ]],//默认第几个排序
/* "bStateSave": true,//状态保存 */
"aLengthMenu" : [ 5, 10, 15 ] , //更改显示记录数选项 "iDisplayLength" : 2, //默认显示的记录数
"bLengthChange": true, //是否允许用户自定义每页显示条数。
"bPaginate": true, //是否分页。
"bProcessing": true, //当datatable获取数据时候是否显示正在处理提示信息。
"sPaginationType": 'full_numbers', //分页样式
"serverSide":true,
"ajax": {
url:"/wwwydl/s/usercontroller/json",
type:"get",
dataType: "json",
data: { 'startTime':startTime,'endTime':endTime,'searchTime':search},
dataSrc:
function(data){
if(data.recordsTotal==null){
data.recordsTotal=0;
}
//查询结束取消按钮不可用
return data.rows;//自定义数据源,默认为data
},
},
"retrieve":true,
"columns": [
{ "data": "uid",
"bSortable": false,
"render": function ( data, type, full, meta ) {
return '<input type="checkbox" value="'+data+'" name="">';
}
},
{ "data": "uid" },
{ "data": "uid" ,"bSortable": false},
{ "data": "username" ,"bSortable": false},
{ "data": "username" ,"bSortable": false},
{ "data": "username" ,"bSortable": false},
{ "data": "username" ,"bSortable": false},
{ "data": "userRtime" },
{ "data": "userpassword" ,"bSortable": false},
{ "data": null,"bSortable": false,
"render": function (data, type,row) {
var id = '"' + data.uid + '"';
var html = "<a title='编辑' href='javascript:;' class='ml-5' οnclick='user_edit(\"编辑\",\"users-add.jsp\","+ id + ",\"\",\"510\")' class='ml-5' style='text-decoration:none'><i class='Hui-iconfont'></i></a>";
html+="<a style='text-decoration:none' class='ml-5' onClick='user_stop(this,"+ id + ")' href='javascript:void(0);' title='停用'><i class='Hui-iconfont'></i></a>";
html+="<a style='text-decoration:none' class='ml-5' onClick='change_password(\"修改密码\",\"change-password.jsp\","+ id + ",\"600\",\"270\")' href='javascript:;' title='修改密码'><i class='Hui-iconfont'></i></a>"
return html;
}
}
],
});
}
源码:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<meta name="renderer" content="webkit|ie-comp|ie-stand">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" />
<meta http-equiv="Cache-Control" content="no-siteapp" />
<!--[if lt IE 9]>
<script type="text/javascript" src="lib/html5.js"></script>
<script type="text/javascript" src="lib/respond.min.js"></script>
<script type="text/javascript" src="lib/PIE_IE678.js"></script>
<![endif]-->
<link rel="stylesheet" type="text/css" href="../resources/common/static/h-ui/css/H-ui.min.css" />
<link rel="stylesheet" type="text/css" href="../resources/common/static/h-ui.admin/css/H-ui.admin.css" />
<link rel="stylesheet" type="text/css" href="../resources/common/lib/Hui-iconfont/1.0.7/iconfont.css" />
<link rel="stylesheet" type="text/css" href="../resources/common/lib/icheck/icheck.css" />
<link rel="stylesheet" type="text/css" href="../resources/common/static/h-ui.admin/skin/default/skin.css" id="skin" />
<link rel="stylesheet" type="text/css" href="../resources/common/static/h-ui.admin/css/style.css" />
<!--[if IE 6]>
<script type="text/javascript" src="http://lib.h-ui.net/DD_belatedPNG_0.0.8a-min.js" ></script>
<script>DD_belatedPNG.fix('*');</script>
<![endif]-->
<title>用户管理</title>
</head>
<body>
<nav class="breadcrumb"><i class="Hui-iconfont"></i> 首页 <span class="c-gray en">></span> 用户中心 <span class="c-gray en">></span> 用户管理 <a class="btn btn-success radius r" style="line-height:1.6em;margin-top:3px" href="javascript:location.replace(location.href);" title="刷新" ><i class="Hui-iconfont"></i></a></nav>
<div class="page-container">
<div class="text-c"> 日期范围:
<input type="text" οnfοcus="WdatePicker({maxDate:'#F{$dp.$D(\'datemax\')||\'%y-%M-%d\'}'})" id="datemin" class="input-text Wdate" style="width:120px;">
-
<input type="text" οnfοcus="WdatePicker({minDate:'#F{$dp.$D(\'datemin\')}',maxDate:'%y-%M-%d'})" id="datemax" class="input-text Wdate" style="width:120px;">
<input type="text" class="input-text" style="width:250px" placeholder="输入会员名称、电话、邮箱" id="search" name="search" id="search">
<button type="submit" class="btn btn-success radius" id="on-search"><i class="Hui-iconfont"></i> 搜用户</button>
</div>
<div class="cl pd-5 bg-1 bk-gray mt-20"> <span class="l"><a href="javascript:;" onClick='user_list()' class="btn btn-danger radius"><i class="Hui-iconfont"></i> 批量删除</a> <a href="javascript:;" οnclick="member_add('添加用户','member-add.html','','510')" class="btn btn-primary radius"><i class="Hui-iconfont"></i> 添加用户</a></span> <span class="r">共有数据:<strong>88</strong> 条</span> </div>
<div class="mt-20">
<table class="table table-border table-bordered table-hover table-bg table-sort">
<thead>
<tr class="text-c">
<th width="25"><input type="checkbox" name="" value=""></th>
<th width="80">ID</th>
<th width="100">用户名</th>
<th width="40">性别</th>
<th width="90">手机</th>
<th width="150">邮箱</th>
<th width="">地址</th>
<th width="130">加入时间</th>
<th width="70">状态</th>
<th width="100">操作</th>
</tr>
</thead>
<!-- <tbody>
<tr class="text-c">
<td><input type="checkbox" value="1" name=""></td>
<td>1</td>
<td><u style="cursor:pointer" class="text-primary" οnclick="member_show('张三','member-show.html','10001','360','400')">张三</u></td>
<td>男</td>
<td>13000000000</td>
<td>admin@mail.com</td>
<td class="text-l">北京市 海淀区</td>
<td>2014-6-11 11:11:42</td>
<td class="td-status"><span class="label label-success radius">已启用</span></td>
<td class="td-manage"><a style="text-decoration:none" onClick="member_stop(this,'10001')" href="javascript:;" title="停用"><i class="Hui-iconfont"></i></a> <a title="编辑" href="javascript:;" οnclick="member_edit('编辑','member-add.html','4','','510')" class="ml-5" style="text-decoration:none"><i class="Hui-iconfont"></i></a> <a style="text-decoration:none" class="ml-5" onClick="change_password('修改密码','change-password.html','10001','600','270')" href="javascript:;" title="修改密码"><i class="Hui-iconfont"></i></a> <a title="删除" href="javascript:;" οnclick="member_del(this,'1')" class="ml-5" style="text-decoration:none"><i class="Hui-iconfont"></i></a></td>
</tr>
</tbody> -->
</table>
</div>
</div>
<script type="text/javascript" src="../resources/common/lib/jquery/1.9.1/jquery.min.js"></script>
<script type="text/javascript" src="../resources/common/lib/layer/2.1/layer.js"></script>
<script type="text/javascript" src="../resources/common/lib/laypage/1.2/laypage.js"></script>
<script type="text/javascript" src="../resources/common/lib/My97DatePicker/WdatePicker.js"></script>
<script type="text/javascript" src="../resources/common/lib/datatables/1.10.0/jquery.dataTables.min.js"></script>
<script type="text/javascript" src="../resources/common/static/h-ui/js/H-ui.js"></script>
<script type="text/javascript" src="../resources/common/static/h-ui.admin/js/H-ui.admin.js"></script>
<script type="text/javascript">
var tbl;
$(function () {
tbl=$('.table-sort').dataTable({
"aaSorting": [[ 1, "desc" ]],//默认第几个排序
/* "bStateSave": true,//状态保存 */
"aLengthMenu" : [ 5, 10, 15 ] , //更改显示记录数选项 "iDisplayLength" : 2, //默认显示的记录数
"bLengthChange": true, //是否允许用户自定义每页显示条数。
"bPaginate": true, //是否分页。
"bProcessing": true, //当datatable获取数据时候是否显示正在处理提示信息。
"sPaginationType": 'full_numbers', //分页样式
"serverSide":true,
"ajax": {
url:"/wwwydl/s/usercontroller/json",
type:"get",
dataType: "json",
data:function (d) {
d.search= d.search.value;
d.sort= d.order[0].column;
d.sort_way= d.order[0].dir;
d.searchTime= $("#search").val();
d.startTime= $("#datemin").val();
d.endTime= $("#datemax").val();
},
dataSrc:
function(data){
if(data.recordsTotal==null){
data.recordsTotal=0;
}
//查询结束取消按钮不可用
return data.rows;//自定义数据源,默认为data
},
},
"retrieve":true,
"columns": [
{ "data": "uid",
"bSortable": false,
"render": function ( data, type, full, meta ) {
return '<input type="checkbox" value="'+data+'" name="">';
}
},
{ "data": "uid" },
{ "data": "uid" ,"bSortable": false},
{ "data": "username" ,"bSortable": false},
{ "data": "username" ,"bSortable": false},
{ "data": "username" ,"bSortable": false},
{ "data": "username" ,"bSortable": false},
{ "data": "userrtime" },
{ "data": "userpassword" ,"bSortable": false},
{ "data": null,"bSortable": false,
"render": function (data, type,row) {
var id = '"' + data.uid + '"';
var html = "<a title='编辑' href='javascript:;' class='ml-5' οnclick='user_edit(\"编辑\",\"users-add.jsp\","+ id + ",\"\",\"510\")' class='ml-5' style='text-decoration:none'><i class='Hui-iconfont'></i></a>";
html+="<a style='text-decoration:none' class='ml-5' onClick='user_stop(this,"+ id + ")' href='javascript:void(0);' title='停用'><i class='Hui-iconfont'></i></a>";
html+="<a style='text-decoration:none' class='ml-5' onClick='change_password(\"修改密码\",\"change-password.jsp\","+ id + ",\"600\",\"270\")' href='javascript:;' title='修改密码'><i class='Hui-iconfont'></i></a>"
return html;
}
}
],
});
$("#on-search").click(function () {
var oSettings = tbl.fnSettings();
tbl.fnClearTable(0);
tbl.fnDraw();
});
});
/*用户-添加*/
function user_add(title,url,w,h){
layer_show(title,url,w,h);
}
/*用户-查看*/
function user_show(title,url,id,w,h){
layer_show(title,url,w,h);
}
/*用户-停用*/
function user_stop(obj,id){
layer.confirm('确认要停用吗?',function(index){
$(obj).parents("tr").find(".td-manage").prepend('<a style="text-decoration:none" onClick="member_start(this,id)" href="javascript:;" title="启用"><i class="Hui-iconfont"></i></a>');
$(obj).parents("tr").find(".td-status").html('<span class="label label-defaunt radius">已停用</span>');
$(obj).remove();
layer.msg('已停用!',{icon: 5,time:1000});
});
}
/*用户-启用*/
function member_start(obj,id){
layer.confirm('确认要启用吗?',function(index){
$(obj).parents("tr").find(".td-manage").prepend('<a style="text-decoration:none" onClick="member_stop(this,id)" href="javascript:;" title="停用"><i class="Hui-iconfont"></i></a>');
$(obj).parents("tr").find(".td-status").html('<span class="label label-success radius">已启用</span>');
$(obj).remove();
layer.msg('已启用!',{icon: 6,time:1000});
});
}
/*用户-编辑*/
function user_edit(title,url,id,w,h){
layer_show(title,url,w,h);
}
/*密码-修改*/
function change_password(title,url,id,w,h){
layer_show(title,url,w,h);
}
function deleteThisRowPapser(id){
alert(id);
}
/*用户-删除*/
function member_del(obj,id){
layer.confirm('确认要删除吗?',function(index){
$(obj).parents("tr").remove();
layer.msg('已删除!',{icon:1,time:1000});
});
}
</script>
</body>
</html>
写个接口接收数据
public DataTableResult4EU json(UsersVo usersVo){
List<Users> list =usersService.getAllUsers(usersVo);
logger.info("后端_用户分页显示");
return ResResult.ok(list).toDataTableResult();
}
javabean:
public class UsersVo {
/**
* datatable搜索值
*/
private String search;
/**
* 排序id
*/
private int sort;
/**
* 排序方式
*/
private String sort_way;
/**
* 开始时间
*/
private String startTime;
/**
* 结束时间
*/
private String endTime;
/**
* 搜索
*/
private String searchTime;
public String getSearch() {
return search;
}
public void setSearch(String search) {
this.search = search;
}
public int getSort() {
return sort;
}
public void setSort(int sort) {
this.sort = sort;
}
public String getSort_way() {
return sort_way;
}
public void setSort_way(String sort_way) {
this.sort_way = sort_way;
}
public String getStartTime() {
return startTime;
}
public void setStartTime(String startTime) {
this.startTime = startTime;
}
public String getEndTime() {
return endTime;
}
public void setEndTime(String endTime) {
this.endTime = endTime;
}
public String getSearchTime() {
return searchTime;
}
public void setSearchTime(String searchTime) {
this.searchTime = searchTime;
}
}
说明:
datatable传给后端的数据
columns[0][data] 0
columns[0][name]
columns[0][orderable] true
columns[0][search][regex] false
columns[0][search][value]
columns[0][searchable] true
columns[1][data] 1
columns[1][name]
columns[1][orderable] true
columns[1][search][regex] false
columns[1][search][value]
columns[1][searchable] true
columns[2][data] 2
columns[2][name]
columns[2][orderable] true
columns[2][search][regex] false
columns[2][search][value]
columns[2][searchable] true
columns[3][data] 3 // data[3]
columns[3][name]
columns[3][orderable] true //可以排序
columns[3][search][regex] false //搜索内容不支持正则表达式
columns[3][search][value] //搜索的内容
columns[3][searchable] true //可以被搜索
draw 1 //浏览器cache的编号,递增不可重复
length 10 //预读长度= 预读页数*每页行数
order[0][column] 0 //按第一列排序
order[0][dir] asc //排序方式
search[regex] false //搜索内容不支持正则表达式
search[value] //输入的搜索的内容
start 0//起始位子,如第一页就从0开始
效果图: