jquery dataTable 后台加载数据并分页实例代码

使用 dataTable后台加载数据并分页。网上版本很多,但很多都是不能用或者不详细的,这里是已经验证过的。

引用 js文件

<script src="static/ace/js/jquery-2.0.3.min.js"></script>
<script src="static/ace/js/jquery.dataTables.min.js"></script>
<script src="static/ace/js/jquery.dataTables.bootstrap.js"></script> 

添加一个table 标签,<tbody></tbody> 可以不用,可以动态加载

<table id="sample-table-2" class="table table-striped table-bordered table-hover">
    <thead>
      <tr>
        <th class="center"><label>
            <input type="checkbox" class="ace" />
            <span class="lbl"></span>
          </label>
        </th>
        <th>名称</th>
        <th>apiKey</th>
        <th>secretKey</th>
        <th><i class="icon-time bigger-110 hidden-480"></i> 创建时间</th>
        <th class="hidden-480">Status</th>
        <th>操作</th>
      </tr>
    </thead> 

  </table>

关键的JS代码:

<script type="text/javascript">
  jQuery(function($) { 

    //初始化table
    var oTable1 = $('#sample-table-2')
        .dataTable(
            {
              "bPaginate" : true,//分页工具条显示
              //"sPaginationType" : "full_numbers",//分页工具条样式
              "bStateSave" : true, //是否打开客户端状态记录功能,此功能在ajax刷新纪录的时候不会将个性化设定回复为初始化状态
              "bScrollCollapse" : true, //当显示的数据不足以支撑表格的默认的高度
              "bLengthChange" : true, //每页显示的记录数
              "bFilter" : false, //搜索栏
              "bSort" : true, //是否支持排序功能
              "bInfo" : true, //显示表格信息
              "bAutoWidth" : true, //自适应宽度
              "bJQueryUI" : false,//是否开启主题
              "bDestroy" : true,
              "bProcessing" : true, //开启读取服务器数据时显示正在加载中……特别是大数据量的时候,开启此功能比较好
              "bServerSide" : true,//服务器处理分页,默认是false,需要服务器处理,必须true
              "sAjaxDataProp" : "aData",//是服务器分页的标志,必须有
              "sAjaxSource" : "${basePath}pushEntity/getTableData",//通过ajax实现分页的url路径。
              "aoColumns" : [//初始化要显示的列
                  {
                    "mDataProp" : "id",//获取列数据,跟服务器返回字段一致
                    "sClass" : "center",//显示样式
                    "mRender" : function(data, type, full) {//返回自定义的样式
                      return "<label><input type='checkbox' class='ace' /><span class='lbl'></span></label>"
                    }
                  },
                  {
                    "mDataProp" : "appName"
                  },
                  {
                    "mDataProp" : "apiKey"
                  },
                  {
                    "mDataProp" : "secretKey"
                  },
                  {
                    "mDataProp" : "createTime",
                    "mRender" : function(data, type, full) {
                      return new Date(data)//处理时间显示
                      .toLocaleString();
                    }
                  },
                  {
                    "mDataProp" : "createTime",
                    "mRender" : function(data, type, full) {
                      return "<span class='label label-sm label-info arrowed arrowed-righ'>Sold</span>"
                    }
                  },
                  {
                    "mDataProp" : "createTime",
                    "mRender" : function(data, type, full) {
                      return "<div class='visible-md visible-lg hidden-sm hidden-xs action-buttons'><a class='blue' href='#'><i class='icon-zoom-in bigger-130'></i></a><a class='green' href='#'><i class='icon-pencil bigger-130'></i></a><a class='red' href='#'><i class='icon-trash bigger-130'></i></a></div>"
                    }
                  } ],
              "aoColumnDefs" : [ {//用来设置列一些特殊列的属性
                "bSortable" : false,
                "aTargets" : [ 0 ]
              //第一列不排序
              }, {
                "bSortable" : false,
                "aTargets" : [ 5 ]
              }, {
                "bSortable" : false,
                "aTargets" : [ 6 ]
              } ],
              "oLanguage" : {//语言设置
                "sProcessing" : "处理中...",
                "sLengthMenu" : "显示 _MENU_ 项结果",
                "sZeroRecords" : "没有匹配结果",
                "sInfo" : "显示第 _START_ 至 _END_ 项结果,共 _TOTAL_ 项",
                "sInfoEmpty" : "显示第 0 至 0 项结果,共 0 项",
                "sInfoFiltered" : "(由 _MAX_ 项结果过滤)",
                "sInfoPostFix" : "",
                "sSearch" : "搜索:",
                "sUrl" : "",
                "sEmptyTable" : "表中数据为空",
                "sLoadingRecords" : "载入中...",
                "sInfoThousands" : ",",
                "oPaginate" : {
                  "sFirst" : "首页",
                  "sPrevious" : "上页",
                  "sNext" : "下页",
                  "sLast" : "末页"
                },
                "oAria" : {
                  "sSortAscending" : ": 以升序排列此列",
                  "sSortDescending" : ": 以降序排列此列"
                }
              }
            }); 

    //全选
    $('table th input:checkbox').on(
        'click',
        function() {
          var that = this;
          $(this).closest('table').find(
              'tr > td:first-child input:checkbox').each(
              function() {
                this.checked = that.checked;
                $(this).closest('tr').toggleClass('selected');
              }); 

        }); 

  });
</script>

后台代码:

   // 获取前端过来的参数,下面三个参数是 dataTable默认的,不要随便更改
    Integer sEcho = Integer.valueOf(params.get("sEcho"));// 记录操作的次数 每次加1
    Integer iDisplayStart = Integer.valueOf(params.get("iDisplayStart"));// 起始
    Integer iDisplayLength = Integer.valueOf(params.get("iDisplayLength"));// 每页显示的size 

    Map<String, Object> map = new HashMap<String, Object>();
    try {
      // 查询数据,分页的话我这边使用的是 PageHelper,这边不介绍了
      PagedResult<PushEntity> list = pushEntityService.findByUserId(
          pushUser.getId(), iDisplayStart, iDisplayLength); 

      // 为操作次数加1,必须这样做
      int initEcho = sEcho + 1; 
  //返回参数也是固定的
      map.put("sEcho", initEcho);
      map.put("iTotalRecords", list.getTotal());//数据总条数
      map.put("iTotalDisplayRecords", list.getTotal());//显示的条数
      map.put("aData", list.getDataList());//数据集合
    } catch (Exception e) {
      e.printStackTrace();
    } 

    return map; 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • jquery datatable服务端分页

    OK,上次完成了客户端的分页,这次我们就在上一次的Demo上进行修改,来实现服务端的分页~ js代码: <script type="text/javascript"> $(document).ready(function() { $('#table_id_example').DataTable({ "bProcessing" : false, //是否显示加载 "sAjaxSource" : '/datatableDemo/user/

  • jQuery DataTables插件自定义Ajax分页实例解析

    一.问题描述 园友是做前端的,产品经理要求他使用jQuery DataTables插件显示一个列表,要实现分类效果. 后端的分页接口已经写好了,不涉及条件查询,需要传入页码(pageNo)和页面显示数据条数(pageSize),显示相应页的显示记录,且不能修改后端接口. 二.分析 先来分析下分页实现. 一是后端分页:这种情况下,在后端很容易实现,在官网上有示例,不多说明. 二是前端分页:前端分页也是支持的,不过需要一次把所有数据都获取到才可以. 看到这里,问题来了.由于后端在目前的情况下是更改不

  • ASP.NET MVC+EF在服务端分页使用jqGrid以及jquery Datatables的注意事项

    一直想自己做个博客网站,技术路线是用ASN.NET MVC5+EF6(Code First)+ZUI+各种Jquery插件,有了这个想法之后就开始选择UI,看了好多bootstrap的模板之后,发现即使你用了bootstrap还是要自己写css样式,都是自学的,前端真的很垃圾,在网上找了很多UI,以下是各种UI的地址,需要的可以去看看: H-ui:http://www.h-ui.net/H-ui.admin.shtml ,是一个前端大牛弄得,模仿bootstrap,做适合中国网上的UI. Ama

  • jquery dataTable 后台加载数据并分页实例代码

    使用 dataTable后台加载数据并分页.网上版本很多,但很多都是不能用或者不详细的,这里是已经验证过的. 引用 js文件 <script src="static/ace/js/jquery-2.0.3.min.js"></script> <script src="static/ace/js/jquery.dataTables.min.js"></script> <script src="static

  • asp.net+jquery滚动滚动条加载数据的下拉控件

    这样的需求貌似自己感觉不是很合理,因为数据多了如此下拉无论从人还是机器操作都比较痛苦. 没办法由于需求下来了,只能按需求操作.网上找了很多相关控件都感觉有点庞大,占资源比较多.没办法自己花半天时间弄出个半成品自定义控件,拿出来分享下,如有高手看了请多指点. 需求:AJAX滚动滚动条加载数据的下拉列表 控件名称:Webcombo 所用技术:ASP.NET(C#),jQuery,ASP.NET一般处理文件(.ashx) 下拉列表具体实现:用DIV模拟下拉列表,input和图片模拟下拉框.最终结果如下

  • 浏览器窗口滚动加载数据采用异步形式从后台加载数据

    以下滚动效果为在网上查找. 在滚动条距顶部距离(页面超出窗口的高度)时采用异步形式从后台加载数据 复制代码 代码如下: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="ScrollLoadData.aspx.cs" Inherits="WebApplication1.ScrollLoadData" %> <!DOCTYPE html PUBL

  • jquery ajax局部加载方法详解(实现代码)

    在jquery中实现ajax加载的方法有很多种,不像以前的js的ajax只有那一种,下面我们介绍jquery ajax实现局部加载方法总结,有需要了解的朋友可参考. 例 $.ajax({ url: "hotelQuery!queryHotelByCity.action", type: "post", dataType: "html", data: "queryHotel.city="+cityobj.value+"&

  • Ajax实现动态加载组合框的实例代码

    一  province.jsp <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <html> <head> <script type="text/javascript" language="javaScript"> var xmlHttp = false; //全局变量,

  • vue.js加载新的内容(实例代码)

    vue是一种轻巧便捷的框架,那么如何进行对于数据加载的刷新呢?以下就是我对于vue.js数据加载的一点想法 源码: <div @scroll="onScroll($event)" style="height: 100%;overflow: auto;"> <ul class="shop-brand-index" v-show="sitems.length > 0" > <li v-for=&

  • iOS 加载Bundle文件的实例代码

    废话不多说了,下面通过一段代码给大家介绍iOS 加载Bundle文件的方法,具体代码如下所示: - (NSString *)loadJsFile:(NSString *)fileName Type:(NSString *)type{ NSString *path = [[NSBundle mainBundle] pathForResource:fileName ofType:type]; NSString *string1 = [NSString stringWithContentsOfFile

  • android中图片加载到内存的实例代码

    本文演示android中图片加载到内存 首先设计界面: 代码如下: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="matc

  • three.js加载obj模型的实例代码

    three.js是一款webGL框架,由于其易用性被广泛应用.如果你要学习webGL,抛弃那些复杂的原生接口从这款框架入手是一个不错的选择.好了,下面通过一段代码给大家介绍three.js加载obj模型,具体代码如下所示: <!DOCTYPE html> <html> <head> <script type="text/javascript" src="libs/three.js"></script> &l

  • jquery zTree异步加载、模糊搜索简单实例分享

    本文实例为大家讲解了jquery zTree树插件的基本使用方法,具体内容如下 一.节点模糊搜索功能:搜索成功后,自动高亮显示并定位.展开搜索到的节点. 二.节点异步加载:1.点击展开时加载数据:2.选中节点时加载数据. 前台代码如下: <script type="text/javascript"> //ztree设置 var setting = { view: { fontCss: getFontCss }, check: { enable: true }, data:

随机推荐