datatable 分页实例

时间:2021-07-30 20:22:03

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&period;NET 中多表关联查询分页实例

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

  2. C&num;-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&plus;jdbc&plus;分页 实例

    根据项目里分页实例,带有注解. 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初学三之条件查询&lpar;Criteria Queries&rpar;与AspNetPager分页实例

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

  9. CSS 分页实例

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

随机推荐

  1. 欢迎进入Node&period;js世界

    官网上(http://www.nodejs.org )给Node下的定义是:”一个搭建在Chrome JavaScript 运行时上的平台,用于构建高速.可伸缩的网络程序.Node.js采用的事件驱动 ...

  2. &lbrack;UOJ&num;34&rsqb;多项式乘法

    [UOJ#34]多项式乘法 试题描述 这是一道模板题. 给你两个多项式,请输出乘起来后的多项式. 输入 第一行两个整数 n 和 m,分别表示两个多项式的次数. 第二行 n+1 个整数,分别表示第一个多 ...

  3. CSU1022

    题目: blue和AutoGerk是好朋友.他们的相同点是都喜欢研究算法,不同点是AutoGerk已是大牛而blue还是菜鸟.blue经常拿一些自以为很难的问题去问AutoGerk,想难倒他,但是每次 ...

  4. ScrollView中嵌套ListView

    scrollview中嵌入listview,要是直接把listview嵌进scrollview中,listview的高度是固定的不能进行滑动.默认情况下Android是禁止在ScrollView中放入 ...

  5. asp&period;net中为什么修改了配置文件后我们不需要重启IIS

    本文转载:http://blog.itpub.net/12639172/viewspace-659819/ 大家知道,asp.net中,如果我们修改了配置文件只要把它保存之后,就会立刻反应到程序中, ...

  6. Asp&period;Net 常用工具类---Config操作(7)

    近期工作比较忙,忙到忘记写博客(自己的借口,主要加班下班后不想动). 月初的时候,打算每两天写一篇博文,分享自己的一些心得和开发体验,无奈现在只写到第六篇,然而时间已经是20号,岁月不饶人! 总想写点 ...

  7. C&plus;&plus;中compile与build的区别

    我在前面的博文就提到了GCC编译器工作的四个阶段:预处理.编译.汇编.链接. 感兴趣的同学可以参考:http://www.cnblogs.com/mlgjb/p/7708007.html compil ...

  8. UML作业第一次:UML用例图绘制

    UML第一次作业 一. 用例图:用例图(usecase diagram)是UML用于描述软件功能的图形.用例图包括用例.参与者及其关系,用例图也可以包括注释和约束.程序员要画时序图啥的用其他的比较麻烦 ...

  9. Adb工具的简单使用

    Adb全称为Android Debug Bridge adb就是连接android手机与PC机的桥梁,可以在pc端对手机进行全面的操作 借助adb工具,可以管理设备或者手机模拟器的状态,进行手机操作, ...

  10. kmp循环节

    循环判断   i%(i-next[i]) == 0 && next[i] != 0 循环长度  i-next[i];