datatable 分页实例
1.使用datatable前台分页,需要后台返回全部数据,返回lisit
2.如果是后台分页 则后台需要获取分页参数,页面中要加
"searchable":true, "bServerSide": true
这两个属性,不需要 dataSrc : "" 这个属性
返回DataTablePageDto 分页对象,查询的list结果set到分页对象中
页面代码如下
currentDt = $table.DataTable({
retrieve: true,
aoColumnDefs:[{"bSortable": false, "aTargets": [0]},{"bSortable": false, "aTargets": [1]}],//指定某列不排序
ajax : {
url : baseUrl + "list",
data:{orgid:v},
dataSrc : "" //前台分页要加该属性
},
fnHeaderCallback:function(){
$("#sp").html("<input type='checkbox' id='selectAll' onchange='checkInp()'>");
},
fnDrawCallback: function()
{
this.api().column(1).nodes().each(function(cell, i) {
cell.innerHTML = i + 1;
});
},
columns : [
{
title:"<span id='sp'><input type='checkbox' id='selectAll' onchange='checkInp()'></span>",
data: "alink"
},
{
title:"<span class='num_tab'>序号</span>",
data :null,
targets: 0
},
{
title:"<span class='name'>姓名</span>",
data:"name"
},
{
title:"<span class='sex_list'>性别</span>",
data:"sex",
"render":function(data,type,row,meta){
if(data=='1'){
data='男';
}else if(data=='2'){
data='女';
}else{
data='';
}
return data;
}
},
{
title:"现任职务",
data:"xrPresent"
},
{
title:"<span class='jiguan'>籍贯</span>",
data:"origin"
},
{
title:"入党时间",
data:"rdTime"
}
, {
title : "<span class='btn_td'>操作</span>",
data : "id",
createdCell:function(td,tdData){
var operator = [];
/** 查看不能用 框架样式 请调整。。。。。。***/
<s:hasPermission name="/admin/gov/sigin_list">
//选调生签到信息列表
var qdBtn = G.viewSigin(tdData,tz);
operator.push(qdBtn);
</s:hasPermission>
/** 查看不能用 框架样式 请调整。。。。。。***/
<s:hasPermission name="/admin/gov/cadre_info">
var tz="1";//选调生信息列表
var xqBtn = G.viewBtn(tdData,tz);
operator.push(xqBtn);
</s:hasPermission>
<s:hasPermission name="/admin/gov/check_pre">
var checkBtn = G.createCheckBtn(tdData);
operator.push(checkBtn);
</s:hasPermission>
<s:hasPermission name="/admin/gov/cadre_update">
var suoBtn = G.createSuo1Btn(tdData);
operator.push(suoBtn);
</s:hasPermission>
<s:hasPermission name="/admin/gov/cadre_delete">
var delBtn = G.createSuo2Btn(tdData);
operator.push(delBtn);
</s:hasPermission>
<s:hasPermission name="/admin/gov/cadre_view">
var view = G.createViewBtn(tdData);
operator.push(view);
</s:hasPermission>
$(td).html(operator);
}
} ],
});
// 执行查询后的列表全选方法
function checkInp(){
var flag = false;
if($("#selectAll").is(':checked')){
flag = true;
}else{
flag = false;
}
$("input[name='gov-list']").each(function() {
$(this).attr("checked", flag);
});
java后台方法如下
//DataTablePageDto 分页对象,searchValue 搜索参数
@RequestMapping("/list")
@ResponseBody
public DataTablePageDto<TorgCadre> addCadre(Integer orgid, String ids,DataTablePageDto tablePage,
HttpServletRequest request) throws UnsupportedEncodingException {
String searchValue = request.getParameter("search[value]"); //搜索参数
searchValue = new String(searchValue.getBytes("iso8859-1"),"UTF-8"); //解决中文乱码
DataTablePageDto<TorgCadre> dataTablePageDto=new DataTablePageDto<TorgCadre>();//分页对象
dataTablePageDto.setStart(tablePage.getStart()); //设置起始查询页
dataTablePageDto.setLength(tablePage.getLength()); //设置查询条数
dataTablePageDto.setDraw(tablePage.getDraw()); //绘制次数
StringBuffer hql = new StringBuffer("FROM TorgCadre WHERE status=? and name like ?");
List<TorgCadre> list = new ArrayList();
if (orgid != null && orgid > 0) {
hql.append(" and orgid in ( ");
hql.append(getAllOrgidsTwo(orgid));
// hql.append(getAllOrgids(orgid));
hql.append(" ) ");
hql.append(levelOrder());
} else if (ids != null && !ids.trim().equals("")) {
hql.append(" and id in ( ");
hql.append(ids);
hql.append(" ) ");
hql.append(levelOrder());
}else if("admin".equals(getLoginUserinfo().getUsername())){
hql.append(levelOrder());
}else{
hql.append(" and 1=-1");
dataTablePageDto.setRecordsTotal(0L);
dataTablePageDto.setRecordsFiltered(0L);
}
String hqlCount=hql.toString().replace("FROM", "select count(1) from");
Long total = cadreService.selectQueryCount(hqlCount.toString(),"1",searchValue);//总记录数
dataTablePageDto.setRecordsTotal(total);
dataTablePageDto.setRecordsFiltered(total);
list = cadreService.selectForList(hql.toString(),dataTablePageDto, "1",searchValue);
for (TorgCadre t : list) {
t.setTorgCadreFamilies(null);
t.setTorgCadreResumes(null);
t.setCheck(null);
t.setAlink("<input type='checkbox' name='gov-list' value="
+ t.getId() + ">");
}
User obj = (User) getSession().getAttribute(SK.USER_INFO);
log.info("查看列表成功");
dataTablePageDto.setData(list);
return dataTablePageDto;//返回分页对象
}
分页对象实体类如下
//该后台分页是采用hibernate分页查询
public class DataTablePageDto<T> {
private List<T> data; //包含的数据
private Integer draw=1; //绘制次数
private Long recordsTotal;//总长度
private Long recordsFiltered;//过滤后的长度
private Integer start=0; //第几条数据开始查询
private Integer length=10; //每页显示几条 public DataTablePageDto() {
}
geter seter方法省略......
}
附其他分页实体
package com.diamond.core.feature.orm.hibernate; import java.util.ArrayList;
import java.util.List; /**
* Mybatis分页参数及查询结果封装. 注意所有序号从1开始.
*
* @param <T>
* Page中记录的类型.
* @author StarZou
* @since 2014年5月18日 下午1:34:32
**/
public class Page<T> {
// --分页参数 --//
/**
* 页编号 : 第几页
*/
protected int pageNo = 1;
/**
* 页大小 : 每页的数量
*/
protected int pageSize = 15; /**
* 偏移量 : 第一条数据在表中的位置
*/
protected int offset; /**
* 限定数 : 每页的数量
*/
protected int limit; // --结果 --//
/**
* 查询结果
*/
protected List<T> result = new ArrayList<T>(); /**
* 总条数
*/
protected int totalCount; /**
* 总页数
*/
protected int totalPages; // --计算 数据库 查询的参数 : LIMIT 3, 3; LIMIT offset, limit; --//
/**
* 计算偏移量
*/
private void calcOffset() {
this.offset = ((pageNo - 1) * pageSize);
} /**
* 计算限定数
*/
private void calcLimit() {
this.limit = pageSize;
} // -- 构造函数 --//
public Page() {
this.calcOffset();
this.calcLimit();
} public Page(int pageNo, int pageSize) {
this.pageNo = pageNo;
this.pageSize = pageSize;
this.calcOffset();
this.calcLimit();
} public Page(int start,int pageSize,String keyword){
this.offset=start;
this.pageSize = pageSize;
} // -- 访问查询参数函数 --//
/**
* 获得当前页的页号,序号从1开始,默认为1.
*/
public int getPageNo() {
return pageNo;
} /**
* 获得每页的记录数量,默认为1.
*/
public int getPageSize() {
return pageSize;
} /**
* 根据pageNo和pageSize计算当前页第一条记录在总结果集中的位置,序号从1开始.
*/
public int getFirst() {
return ((pageNo - 1) * pageSize) + 1;
} /**
* 根据pageNo和pageSize计算当前页第一条记录在总结果集中的位置,序号从0开始.
*/
public int getOffset() {
return offset;
} public int getLimit() {
return limit;
} // -- 访问查询结果函数 --//
/**
* 取得页内的记录列表.
*/
public List<T> getResult() {
return result;
} /**
* 设置页内的记录列表.
*/
public void setResult(final List<T> result) {
this.result = result;
} /**
* 取得总记录数, 默认值为-1.
*/
public int getTotalCount() {
return totalCount;
} /**
* 设置总记录数.
*/
public void setTotalCount(final int totalCount) {
this.totalCount = totalCount;
this.totalPages = this.getTotalPages();
} /**
* 根据pageSize与totalCount计算总页数, 默认值为-1.
*/
public int getTotalPages() {
if (totalCount < 0) {
return -1;
}
int pages = totalCount / pageSize;
return totalCount % pageSize > 0 ? ++pages : pages;
} public void setTotalPages(int totalPages) {
this.totalPages = totalPages;
} }
datatable 分页实例的更多相关文章
- RDIFramework.NET 中多表关联查询分页实例
RDIFramework.NET 中多表关联查询分页实例 RDIFramework.NET,基于.NET的快速信息化系统开发.整合框架,给用户和开发者最佳的.Net框架部署方案.该框架以SOA范式作为 ...
- C#-DataTable分页代码
/// <summary> /// DataTable分页并取出指定页码的数据 /// </summary> /// <param name="dtAll&qu ...
- DataTable 分页
#region DataTable 分页 /// <summary> /// Datatable 分页 /// </summary> /// <param name=&q ...
- php分页实例附代码
一个典型的PHP分页实例代码分享,学习php的朋友肯定用得到,主要是了解思路: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transit ...
- Jsp分页实例---真分页
网页的分页功能的实现比较简单,实现方法也多种多样. 今天总结一个简单的Jsp真分页实例. 首先,提到分页就要先明确一个概念,何为真分页何谓假分页. 假分页:一次性从数据库读出表的所有数据一次性的返回给 ...
- Struts+jdbc+分页 实例
根据项目里分页实例,带有注解. package org.tarena.netctoss.dao.impl; import java.sql.Connection; import java.sql.Pr ...
- js分页实例
js分页实例 案例1 1.js_pageusers.html <!DOCTYPE html> <html> <head> <title>js_pageu ...
- NHibernate初学三之条件查询(Criteria Queries)与AspNetPager分页实例
NHibernate除了SQL与HQL两种查询操作外,还有一种就是条件查询Criteria,本文将从网上整理一些Criteria的理论及小实例,最后通过一个结合AspNetPager分页来加深理解,必 ...
- CSS 分页实例
CSS 分页实例 一.简单分页 如果你的网站有很多个页面,你就需要使用分页来为每个页面做导航. 以下实例演示了如何使用 HTML 和 CSS 来创建分页: <!DOCTYPE html> ...
随机推荐
- 【汇总】Linux常用脚本shell
[crontab] #每天6:00 执行a.sh00 6 * * * /bin/sh /home/work/rxShell/a.sh #每天3:20 执行a1.sh20 3 * * * /bin/sh ...
- windows服务器修改登录密码
1. 右键我的电脑---管理 2. 计算机管理---本地用户和组--用户 3. 右键administrator用户,选择修改密码 4. 点击继续进入下一步 5. 输入新密码并保存
- yum安装man命令程序错误
第一次安装CentOS后,man命令无法使用,查了一下,发现没有安装man命令程序.尝试安装man yum install man 结果如下: Loaded plugins: fastestmirro ...
- python requests库学习笔记(下)
1.请求异常处理 请求异常类型: 请求超时处理(timeout): 实现代码: import requestsfrom requests import exceptions #引入exc ...
- Hibernate学习(二)保存数据
package cn.lonecloud.test; import java.util.Date; import org.hibernate.HibernateException; import or ...
- Https访问
Let's Encrypt是很火的一个免费SSL证书发行项目,自动化发行证书,证书有90天的有效期.适合个人使用或者临时使用,不用再忍受自签发证书不受浏览器信赖的提示.去年VPS侦探曾经说过Let's ...
- java学习笔记(详细)
java平台 1.J2SE java开发平台标准版 2.J2EE java开发平台企业版 java程序需要在虚拟机上才可以运行,换言之只要有虚拟机的系统都可以运行java程序.不同系统上要安装对应的虚 ...
- 54.1 怎样才算学会django? 知道这28个知识点才算会django2
学到什么程度才算会django了?这篇文章帮你梳理一下 关于django2的28个不可不知的知识点总结: 1.cookie操作: -客户端本地存储的键值对 2.session操作: -服务器端可以保存 ...
- ACdream 1068
我没有用二分法,直接构造最小数,既然题目保证答案一定存在那么与上界无关. 如给定S=16,它能构成的最小数为79,尽量用9补位,最高位为S%9.如果构造的数大于下界A,那么直接输出,因为这是S能构成的 ...
- mex (离散化+线段树)
Time Limit: 3000 ms Memory Limit: 256 MB Description 给你一个无限长的数组,初始的时候都为0,有3种操作: 操作1是把给定区间$[l,r]$设为 ...