DataTables单纯的分页 不排序 没有默认搜索

简介: 憋了好几天看了中文和英文的文档,终于把分页搞出来了,先前一直纠结这个页码和页容量怎么传的,其实不用纠结这个,会自动识别。

憋了好几天看了中文和英文的文档,终于把分页搞出来了,先前一直纠结这个页码和页容量怎么传的,其实不用纠结这个,会自动识别。


服务器分页参考文档:http://www.datatables.club/manual/server-side.html


首先页面HTML


<table class="table table-striped table-bordered table-hover" id="item-table">
 <thead>
  <tr>
  <th width="25px"><label><input type="checkbox" class="ace"/><span class="lbl"></span></label></th>
  <th width="200px">商品编号</th>
  <th width="250px">商品名称</th>
  <th width="120px">商品类型</th>
  <th width="120px">价格</th>
  <th width="120px">库存数量</th>       
  <th width="120px">条码</th>
  <th width="180px">店铺名称</th>
  <th width="240px">创建时间</th>  
  <th width="240px">更新时间</th>                
  <th width="70px">状态</th> 
  <th width="240px">操作</th>
 </tr>
   </thead>
 <tbody>    
 </tbody> 
 </table>


js代码:这部分比较重要


jQuery(function($) {
    $('#item-table').DataTable( {
    "ordering": false,//排序 关闭
      "searching":false,//搜索关闭
      "pagingType": "full_numbers",//分页样式 这个显示的首页,上一页,下一页,尾页
      "bAutoWidth": true, //自动调整宽度
      "stateSave": false,//缓存 感觉没起上作用,不知道怎么用
       "processing": true,//显示搜索进程
     "serverSide": true,//服务器端分页,一定要写
     ajax : {
      url : "item/list",  //你请求的url路径   
          },
          "columns": [ //页面数据返回处理
             {render : function(data, type, row, meta) {
            return "<label><input type=\"checkbox\" class=\"ace\"/><span class=\"lbl\"></span></label>";
                            }
               },
               {data: "id" },
             {data: "title"},
             { data: "gid",
               render: function (data, type, row, meta) {
                 if(data==1){
                   return "商品类型1";
                 }else if (data==2){
                   return "商品类型2";
                 }else if (data==0){
                   return "商品类型3";
                 }else{
               return "未知";
                 }
                    }   
             },
             { data: "price",
               render: function (data, type, row, meta) {
                 return (data*1000/1000).toFixed(2);//格式化钱数,保留两位小数
               }
             },
             { data: "num"},
             { data: "barcode" },
             { data: "sname" },
             { data: "created",
               "render" : function(data, type, full, meta) {
              //时间格式化 需要引入<script  type="text/javascript" src="../js/date-time/moment.min.js" ></script>
              return  moment(data).format("YYYY-MM-DD HH:mm:ss");
            }
             },
             { data: "updated",
               "render" : function(data, type, full, meta) {
              //时间格式化
              return  moment(data).format("YYYY-MM-DD HH:mm:ss");
            }
             },
             { data: "status",
               render: function (data, type, row, meta) {
                 if(data==0){
                   return "<span class=\"label label-danger radius\">禁用</span>";
                 }else if (data==1){
                   return "<span class=\"label label-success radius\">正常</span>";
                 }else if (data==2){
                   return "<span class=\"label label-warning radius\">下架</span>";
                 }else if(data==3){
               return "<span class=\"label label-default radius\">删除</span>";                  
                 }else{
                   return "<span class=\"label label-secondary radius\">未知</span>";
                 }
                    }   
             }                
                   ],
                   "columnDefs" : [ {
                  // 定义操作列,######以下是重点########
                  "targets" : 11,//操作按钮目标列
                  "data" : null,
                  "render" : function(data, type,row) {
                  var id = '"' + row.id + '"';
                  var html = "<a href='javascript:void(0);' onclick='forbiddenThisRowItem("+ id + ")' class='btn btn-xs btn-danger'><i class='icon-stop bigger-90'></i>禁用 </a> "
                  html += "<a href='javascript:void(0);'   onclick='editThisRowItem("+ id + ")' class='btn btn-xs btn-info'><i class='icon-edit bigger-90'></i>编辑</a> "
                  html += "<a href='javascript:void(0);'   onclick='deleteThisRowItem("+ id + ")' class='btn btn-xs btn-warning'><i class='icon-trash bigger-90'></i>删除</a> "
                  return html;
                  }
                  } ]       
      } );
})


还有一个js,就是网上的那个中文显示,不然显示的是英文的


//http://datatables.net/plug-ins/pagination#bootstrap
$.extend( true, $.fn.dataTable.defaults, {
  "sDom": "<'row'<'col-sm-6'l><'col-sm-6'f>r>t<'row'<'col-sm-6'i><'col-sm-6'p>>",
  "sPaginationType": "bootstrap",
  "oLanguage": {
    "sLengthMenu": "Display _MENU_ records"
  }
} );
(function(){  
    var oLanguage={
        "oPaginate": {
            "sFirst": "首页",
            "sLast": "末页",
            "sNext": "下一页",
            "sPrevious": "上一页"
        },
        "sEmptyTable": "没有相关记录",
        "sInfo": "第 _START_ 到 _END_ 条记录,共 _TOTAL_ 条",
        "sInfoEmpty": "第 0 到 0 条记录,共 0 条",
        "sInfoFiltered": "(从 _MAX_ 条记录中检索)",
        "sInfoPostFix": "",
        "sDecimal": "",
        "sThousands": ",",
        "sLengthMenu": "每页显示条数: _MENU_",
        "sLoadingRecords": "正在载入...",
        "sProcessing": "正在载入...",
        "sSearch": "搜索:",
       "sSearchPlaceholder": "",
        "sUrl": "",
        "sZeroRecords": "没有相关记录"
   }
    //$.fn.dataTable.defaults.oLanguage=oLanguage;
   $.extend($.fn.dataTable.defaults.oLanguage,oLanguage)
})();


java代码就比较简单了


实现类用了pagerhelper分页如需jar,请联系我


  public DataTableResult queryItem(int page, int rows) {
    PageHelper.startPage(page, rows);
    TbItemExample example=new TbItemExample();
    List<TbItem> itemList = tbItemMapper.selectByExample(example);
    DataTableResult result=new DataTableResult();
    result.setData(itemList);
    PageInfo<TbItem> info=new PageInfo<>(itemList);
    result.setRecordsTotal((int) info.getTotal());
    result.setRecordsFiltered((int) info.getTotal());
    return result;        
  }


Controller


public DataTableResult getItemList(HttpServletRequest request){
    int draw =Integer.parseInt(request.getParameter("draw"));
    int start = Integer.parseInt(request.getParameter("start"));
    int length = Integer.parseInt(request.getParameter("length"));
    int page=1;
    if(start==0) {
       page=1;
    }else {
       page=start/length+1;     
    }
       DataTableResult result = itemService.queryItem(page, length);  
       result.setDraw(draw);
     return result;   
  }


封装的类


public class DataTableResult {
  private int draw;//绘制计数器
  private int recordsTotal;//没有过滤的记录数
  private int recordsFiltered;//过滤后的记录数
  private List<?> data;//返回数据
       省略 getter ,setter
}


mapper就是逆向工程生成的mapper如需要,请联系我。


自定义搜索和批量删除请参考本人另一篇博客

https://blog.csdn.net/weixin_39555954/article/details/83543784

相关文章
|
6月前
|
JavaScript 数据格式
10jqGrid - 搜索操作
10jqGrid - 搜索操作
25 0
|
6月前
|
JavaScript 前端开发 Java
64jqGrid - 在搜索中显示查询条件
64jqGrid - 在搜索中显示查询条件
30 0
|
6月前
|
JavaScript 前端开发 Java
63jqGrid - 复杂搜索
63jqGrid - 复杂搜索
29 0
|
6月前
|
JSON JavaScript 前端开发
82jqGrid - 搜索
82jqGrid - 搜索
20 0
|
6月前
|
JavaScript 前端开发 Java
65jqGrid - 搜索中验证数据
65jqGrid - 搜索中验证数据
27 0
|
6月前
|
JavaScript 前端开发 Java
66jqGrid - 搜索模板
66jqGrid - 搜索模板
20 0
|
6月前
|
JavaScript 前端开发 Java
67jqGrid - 搜索操作工具栏
67jqGrid - 搜索操作工具栏
27 0
|
缓存 前端开发 JavaScript
React Table 表格组件使用教程 排序、分页、搜索过滤筛选功能实战开发
在日常开发中,特别是内部使用的后台系统时,我们常常会需要用表格来展示数据,同时提供一些操作用于操作表格内的数据。简单的表格直接用原生 HTML table 就好,但如果要在 React 中实现一个功能丰富的表格,其实是非常不容易的。在本站之前的文章《最好的 6 个 React Table 组件详细亲测推荐》 中有提到过 react-table 这个库,如果对这个库不太了解的同学可以先了解一下,这里不再赘述。简而言之,react-table 是一个非常强大的库,它与常见的表格组件不同,它不负责渲染 HTML 和 CSS,而是提供了一系列的 hooks 让我们可以灵活地构建功能强大的表格组件。
1179 0
|
5月前
|
前端开发 JavaScript
Bootstrap Table根据参数搜索功能
Bootstrap Table根据参数搜索功能
53 0
|
7月前
|
JavaScript
jquery模糊查询--搜索demo效果示例(整理)
jquery模糊查询--搜索demo效果示例(整理)