datatables 小demo

一直有朋友问我datatables怎么用,干脆写篇文章
申明(这是从自己正在做的项目中扣出来的一小块)

html 就这样一个div
 <div class="portlet-body">
        <table class="table table-striped table-bordered table-hover" id="sample_1"></table>
 </div>

引入(其实只需要一个datatables的css)

<link rel="stylesheet" type="text/css" href="static/lib/jquery-ui/css/ui-lightness/jquery-ui-1.10.4.css"/>
<link rel="stylesheet" type="text/css" href="static/assets/plugins/data-tables/DT_bootstrap.css"/>
<link rel="stylesheet" type="text/css" href="static/assets/plugins/bootstrap/css/bootstrap.css"/>

js(其实只需要一个datatables的js)

<script type="text/javascript" src="static/assets/plugins/data-tables/jquery.dataTables.js"></script>
<script type="text/javascript" src="static/assets/plugins/data-tables/DT_bootstrap.js"></script>
<script type="text/javascript" src="static/lib/jquery-ui/js/jquery-ui-1.10.4.js"></script>
<script type="text/javascript" src="static/assets/scripts/core/datatable.js"></script>

//生成表的方法
   function initDispatchingTable() {
      var dataTable = $('#sample_1').dataTable({
        "bServerSide": true, //是否启动服务器端数据导入
        "aLengthMenu": [
          [10, 20, 50],
          [10, 20, 50]
        ], //更改显示记录数选项
        "iDisplayLength": 10, //默认显示的记录数
        "sPaginationType": "bootstrap", //详细分页组,可以支持直接跳转到某页
        "aaSorting": [
          [0, "desc"]
        ], //默认的排序方式,第1列,升序排列
        "bFilter": false, //是否启动过滤、搜索功能
        "bDestroy": true,
        "bLengthChange": false,
        "oLanguage": { //国际化配置
          "sProcessing": "正在获取数据,请稍后...",
          "sLengthMenu": "显示 _MENU_ 条",
          "sZeroRecords": "没有您要搜索的内容",
          "sInfo": "从 _START_ 到  _END_ 条记录 总记录数为 _TOTAL_ 条",
          "sInfoEmpty": "记录数为0",
          "sInfoFiltered": "(全部记录数 _MAX_ 条)",
          "sInfoPostFix": "",
          "sSearch": "搜索",
          "sUrl": "",
          "oPaginate": {
            "sFirst": "第一页",
            "sPrevious": "上一页",
            "sNext": "下一页",
            "sLast": "最后一页"
          }
        },
        "aoColumns": [
          {"mData": "id", "sTitle": "ID", "sClass": "center", "bSortable": false, "bVisible": false, "bSearchable": false},
          {"mData": "userId", "sTitle": "USERID", "sClass": "center", "bSortable": false, "bVisible": false, "bSearchable": false},

          {"mData": "loginName", "sTitle": "用户名", "sClass": "right", "bSortable": true, "bSortable": true},
          {"mData": "nickName", "sTitle": "用户昵称", "sClass": "right", "bSortable": true, "bSortable": true},
          {"mData": "phone", "sTitle": "电话", "sClass": "right", "bSortable": true, "bSortable": true},
          {"mData": "loginTime", "sTitle": "登录时间", "sClass": "right", "bSortable": true, "bSortable": true},
          {"mData": "logOutTime", "sTitle": "登出时间", "sClass": "right", "bSortable": true, "bSortable": true},
          {"mData": null, "sTitle": "操作", "sClass": "right", "bSortable": true,"sWidth":"90px",
            "fnRender": function (obj) {
              return '<span class="label label-sm label-success" οnclick="findOpe(this);" style="cursor: pointer;">查看操作日志</span>';
            }
          },
        ],
        "sAjaxSource": "log/findLogin",//数据源 调用后台路径
        "fnDrawCallback": function( oSettings ) {
          $("[data-toggle='tooltip']").tooltip();
        }
      });
      return dataTable;
    }


  jQuery(document).ready(function () {//直接在ready 方法中调用生成表的initDispatchingTable() 即可
      initDispatchingTable();
    });

//后台我只扣出controller中的一部分

    @RequestMapping(value = "/findLogin")
    @ResponseBody
    public String findLogin(String searchValue,@DataTableModel Pageable pageable){
        /***1.处理搜索条件***/
        if(!StringUtils.isEmpty(searchValue)){
            searchValue = "%" + searchValue.trim() + "%";
        }else{
            searchValue = "%%";
        }
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Page<UserLog> userLogs = userLogRepository.findAll(searchValue,pageable);
        JSONArray jsonArray = new JSONArray();
        for (UserLog userLog:userLogs){
            JSONObject jo = new JSONObject();
            jo.put("id",userLog.getUserLogId());
            jo.put("userId",userLog.getUser().getUserId());
            jo.put("loginName",userLog.getUser().getLoginName());
            jo.put("nickName",userLog.getUser().getNickName());
            jo.put("phone",userLog.getUser().getPhone()==null?"":userLog.getUser().getPhone());
            jo.put("loginTime",sdf.format(userLog.getLoginTime()));
            jo.put("logOutTime",userLog.getLogoutTime()==null?"":sdf.format(userLog.getLogoutTime()));
            jsonArray.add(jo);
        }
        JSONObject result = new JSONObject();
        result.put("aaData", jsonArray);
        result.put("iTotalRecords", userLogs.getTotalElements());
        result.put("iTotalDisplayRecords", userLogs.getTotalElements());
        return result.toJSONString();
    }//只需要返回一个json 给前台即可

效果图


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值