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 分页实例的更多相关文章

  1. RDIFramework.NET 中多表关联查询分页实例

    RDIFramework.NET 中多表关联查询分页实例 RDIFramework.NET,基于.NET的快速信息化系统开发.整合框架,给用户和开发者最佳的.Net框架部署方案.该框架以SOA范式作为 ...

  2. C#-DataTable分页代码

    /// <summary> /// DataTable分页并取出指定页码的数据 /// </summary> /// <param name="dtAll&qu ...

  3. DataTable 分页

    #region DataTable 分页 /// <summary> /// Datatable 分页 /// </summary> /// <param name=&q ...

  4. php分页实例附代码

    一个典型的PHP分页实例代码分享,学习php的朋友肯定用得到,主要是了解思路: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transit ...

  5. Jsp分页实例---真分页

    网页的分页功能的实现比较简单,实现方法也多种多样. 今天总结一个简单的Jsp真分页实例. 首先,提到分页就要先明确一个概念,何为真分页何谓假分页. 假分页:一次性从数据库读出表的所有数据一次性的返回给 ...

  6. Struts+jdbc+分页 实例

    根据项目里分页实例,带有注解. package org.tarena.netctoss.dao.impl; import java.sql.Connection; import java.sql.Pr ...

  7. js分页实例

    js分页实例 案例1 1.js_pageusers.html <!DOCTYPE html> <html> <head> <title>js_pageu ...

  8. NHibernate初学三之条件查询(Criteria Queries)与AspNetPager分页实例

    NHibernate除了SQL与HQL两种查询操作外,还有一种就是条件查询Criteria,本文将从网上整理一些Criteria的理论及小实例,最后通过一个结合AspNetPager分页来加深理解,必 ...

  9. CSS 分页实例

    CSS 分页实例 一.简单分页 如果你的网站有很多个页面,你就需要使用分页来为每个页面做导航. 以下实例演示了如何使用 HTML 和 CSS 来创建分页: <!DOCTYPE html> ...

随机推荐

  1. Java开发API文档资源

    <netty> http://netty.io/4.1/api/index.html < Spring FrameWork > 1   http://spring.io/ 2 ...

  2. cygwin + git + nat123 30元搭建公网可访问的git服务器

    首先参考上一篇安装服务器上的CYGWIN: http://jingyan.baidu.com/article/7e440953eabd742fc0e2efae.html 上一篇中已经加入了GIT相关的 ...

  3. Java经典编程题50道之二十一

    求1+2!+3!+...+20!的和. public class Example21 {    public static void main(String[] args) {        sum( ...

  4. bzoj 1171 大sz的游戏& 2892 强袭作战 (线段树+单调队列+永久性flag)

    大sz的游戏 Time Limit: 50 Sec  Memory Limit: 357 MBSubmit: 536  Solved: 143[Submit][Status][Discuss] Des ...

  5. Docker容器技术

    Docker介绍 什么是容器 Linux容器是与系统其他部分隔离开的一系列进程,从另一个系统镜像运行,并由该镜像提供支持进程所需的全部文件. 容器镜像包含了应用的所有依赖项,因而在从开发到测试再到生产 ...

  6. Jenkins系列——使用checkstyle进行代码规范检查【升级版】

    1.背景 在<Jenkins系列——使用checkstyle进行代码规范检查>一文中完成了ant实现代码规范检查的例子.但存在以下缺陷: 每个作业都需要配置一个不同的checkstyle ...

  7. CodeForces - 788B Weird journey 欧拉路

    题意:给定n个点,m条边,问能否找到多少条符合条件的路径.需要满足的条件:1.经过m-2条边两次,剩下两条边1次  2.任何两条路的终点和起点不能相同. 欧拉路的条件:存在两个或者0个奇度顶点. 思路 ...

  8. uva103 动态规划

    多维矩形嵌套,和二维的一模一样.判断能否嵌套时需要先排序. AC代码: #include<cstdio> #include<cstring> #include<algor ...

  9. 求第k小的数 O(n)复杂度

    思路:利用快速排序的思想,把数组递归划分成两部分.设划分为x,数组左边是小于等于x,右边大于x.关键在于寻找一个最优的划分,经过 Blum . Floyd . Pratt . Rivest . Tar ...

  10. ZOJ - 2477 dfs [kuangbin带你飞]专题二

    注意输入的处理,旋转操作打表.递增枚举可能步数,作为限制方便找到最短路. AC代码:90ms #include<cstdio> #include<cstring> char m ...