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. Docker MySQL备份

    建立备份的MySQL容器 docker run --name mysql-back -e MYSQL_ROOT_PASSWORD=root -v /srv/mysql/backup:/mysql/ba ...

  2. 洛谷P1879 [USACO06NOV]玉米田Corn Fields【状压DP】题解+AC代码

    题目描述 Farmer John has purchased a lush new rectangular pasture composed of M by N (1 ≤ M ≤ 12; 1 ≤ N ...

  3. 一位IT男的7年工作经验总结

    一位IT男的7年工作经验总结 1.分享第一条经验:"学历代表过去.能力代表现在.学习力代表未来." 其实这是一个来自国外教育领域的一个研究结果.相信工作过几年.十几年的朋友对这个道 ...

  4. JavaScript命名整理

    .container { width: 720px; background: #fafafa; border: 2px dashed #999; padding: 10px; float: left ...

  5. C# 如何使用预处理指令?

    #define Debug #define Release #undef Release #if Debug using System; #endif 注意:#define 必须在文档最前面

  6. JavaScript将小写金额转换成大写

    //num为小写金额,单位元 changeMoney(num) { if(isNaN(num))return ""; var strPrefix=""; if( ...

  7. npm http-server Dockerfile alpine 微容器,袖珍体积,解决时区问题

    前端写得少,但是前端技术的思想也是非常有学习的价值,用VUE写了几个手机form页面,体验了一番spa,用docker部署也是非常简单 直接docker pull node  676M体积.不能忍. ...

  8. easywechat之微信支付--在thinkPHP5中的使用

    1. 准备工作 1.1 easywechat 安装完成 未安装移步至 -> http://www.cnblogs.com/flyphper/p/8484600.html 1.2 确定支付相关的配 ...

  9. Mybatis入门1

    关于Mybatis的快速入门可以分为这样几步: 1.引入依赖或者引入jar包 2.编写全局配置文件(Mybatis-config.xml) <?xml version="1.0&quo ...

  10. 帮Python找“对象”

    引言:你一定会感叹:Python还缺找对象? 毕竟"一切皆对象"是人家Python的哲学理念.不过,Python  允许程序员以纯粹的面向过程的方式来使用它,所以人们有时会忽视它那 ...