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;
    }

}