您的位置:首页 > Web前端 > JQuery

jquery-datatable之服务器分页

2014-09-24 15:11 211 查看
上一篇讲了jquery-datatable的基本参数配置,并且讲了一个小demo。下面讲jquery-datatable之服务器分页。

jquery-datatable的官方网站讲了很多例子,但是没有给出一个完成的服务端分页的例子,网上有很多这方面的例子,但是写的都不完成,所以导致很多开发不能体会到其强大的能力。下面将会介绍jquery-datatable+springMVC的一个完成例子:

首页,直接上js代码:

 $("#sample_editable_1")

.dataTable(

{

"bPaginate" : true,// 分页按钮

"bFilter" : true,// 搜索栏

"bLengthChange" : 10,// 每行显示记录数

"iDisplayLength" : 10,// 每页显示行数

"bSort" : true,// 排序

"bInfo" : true,// Showing 1 to 10 of 23 entries

"bAutoWidth" : true, // 自动计算列宽度

"sPaginationType" : "full_numbers", // 分页,一共两种样式

"bProcessing" : true,

"bServerSide" : true,

"bDestroy" : true,

"bStateSave" : true,

"sDom" : "<'row-fluid'<'span6'l><'span6'f>r>t<'row-fluid'<'span6'i><'span6'p>>",

"sPaginationType" : "bootstrap",

"sAjaxSource" : "ajax-role.shtml?rand="

+ Math.random(),

"fnServerData" : retrieveData,

"aaSorting" : [ [ 0, "asc" ] ],

"aoColumns" : [

{

"mDataProp" : "id",

"bSortable" : true

},

{

"mDataProp" : "code",

"bSortable" : false

},

{

"mDataProp" : "name"

},

{

"mDataProp" : "",

"fnRender" : function(obj) {

var sReturn = '<a class="edit" data-toggle="modal" href ="#myModal">Edit</a>';

return sReturn;

}

},

{

"mDataProp" : "",

"fnRender" : function(obj) {

var sReturn = '<a class="delete" href = "javascript:;">Delete</a>';

return sReturn;

}

}

],

"oLanguage" : {

"sLengthMenu" : "显示 _MENU_ 条 ",

"sZeroRecords" : "没有您要搜索的内容",

"sInfo" : "从 _START_ 到 _END_ 条记录——总记录数为 _TOTAL_ 条",

"sInfoEmpty" : "记录数为0",

"sInfoFiltered" : "(全部记录数 _MAX_ 条)",

"sInfoPostFix" : "",

"sSearch" : "搜索",

"oPaginate" : {

"sFirst" : "第一页",

"sPrevious" : " 上一页 ",

"sNext" : " 下一页 ",

"sLast" : " 最后一页 "

}

}

});

function retrieveData(sSource, aoData, fnCallback) {

$.ajax({

"type" : "POST",

"contentType" : "application/json",

"url" : sSource,

"dataType" : "json",

"data" : JSON.stringify(aoData),

"success" : fnCallback

});

}
以上代码,大家读了我写的第一节,就会很自然的明白了,这里主要是sAjaxSource,这是请求服务端的地址。必须要的。

下面上java代码:

  @RequestMapping(value="ajax-role",method = RequestMethod.POST)

@ResponseBody

public Object ajaxRole(@RequestBody List<Object>param) throws IOException{

DataTableParameter data =new DataTableParameter();

Map<String,Object>map =ObjectConvertMap.convertToMap(param);

List<Role>roles =Lists.newArrayList();

roles =roleService.getRoles(map);

Long totalCount =roleService.getRoleTotalNumber(map);

data.setAaData(roles);

data.setiTotalDisplayRecords(totalCount);

data.setiTotalRecords(totalCount);

data.setsEcho(map.get("sEcho")+"");

return data;

}

List<Object>param是接受到的参数集合("data" : JSON.stringify(aoData))这里一个list的集合,首先将其装换成一个map

 public static Map<String,Object>convertToMap(List<Object>list){

        Map<String,Object>map =Maps.newHashMap();

        for(Object
ob:list){

            Map<String,Object> param =(Map<String, Object>) ob;

          map.put(param.get("name")+"",param.get("value"));

        }

        return map;

    }

然后进行具体的业务逻辑,获取数据。注意:

map里面的两个主要参数iDisplayStart ,iDisplayLength(从第几条开始显示,显示的长度)

这两个参数是分页用到的参数

返回数据

DataTableParameter是对参数的封装

    private static final long serialVersionUID = 1L;

    private String sEcho;

    private Long iTotalRecords;

    private Long iTotalDisplayRecords;

    private List<?>aaData =Lists.newArrayList();

以上属性必须要有,并且属性名称也要一致,否则js无法解析。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  jquery-datatable