最近做东西有一个需求,因为数据量很大,而实际上用户并不会对所有数据都感兴趣,如果用户直接翻页到最后一页的话,查询速度会很慢,影响用户体验,所以将分页控件处理成百度检索的效果,也就是用户不能直接点击到最后一页。
在这里我决定使用强大的datatables。datatables的“simple_numbers”的分页模式,比较接近需要的效果。
那么问题来了,因为数据量比较大,分页是需要在服务端进行的,同时还需要传递查询条件到服务端。怎样传递数据到后台呢?
先来看前台代码
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico"> <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0"> <link rel="stylesheet" type="text/css" href="../../js/DataTables-1.10.8/media/css/jquery.dataTables.css"> <script type="text/javascript" language="javascript" src="../../js/DataTables-1.10.8/media/js/jquery.js"></script> <script type="text/javascript" language="javascript" src="../../js/DataTables-1.10.8/media/js/jquery.dataTables.js"></script> <script type="text/javascript" language="javascript" class="init"> var table; $(document).ready(function() { table = $('#example').DataTable( { "pagingType": "simple_numbers",//设置分页控件的模式 searching: false,//屏蔽datatales的查询框 aLengthMenu:[10],//设置一页展示10条记录 "bLengthChange": false,//屏蔽tables的一页展示多少条记录的下拉列表 "oLanguage": { //对表格国际化 "sLengthMenu": "每页显示 _MENU_条", "sZeroRecords": "没有找到符合条件的数据", // "sProcessing": "<img src=’./loading.gif’ />", "sInfo": "当前第 _START_ - _END_ 条 共计 _TOTAL_ 条", "sInfoEmpty": "木有记录", "sInfoFiltered": "(从 _MAX_ 条记录中过滤)", "sSearch": "搜索:", "oPaginate": { "sFirst": "首页", "sPrevious": "前一页", "sNext": "后一页", "sLast": "尾页" } }, "processing": true, //打开数据加载时的等待效果 "serverSide": true,//打开后台分页 "ajax": { "url": "../../alarms/datatablesTest", "dataSrc": "aaData", "data": function ( d ) { var level1 = $('#level1').val(); //添加额外的参数传给服务器 d.extra_search = level1; } }, "columns": [ { "data": "total" }, { "data": "level" } ] } ); } ); function search1() { table.ajax.reload(); } </script> </head> <body class="dt-example"> <div> <input type="text" id="level1"> <input type="button" onclick="search1()" value="查询"> </div> <table id="example" class="display" cellspacing="0" width="100%"> <thead> <tr> <th>Name</th> <th>Position</th> </tr> </thead> </table> </body> </html>
java代码如下,使用spring的 @ResponseBody将结果转换成json格式返回给前台
@RequestMapping(value="/datatablesTest", method=RequestMethod.GET) @ResponseBody public DatatablesViewPage<Alarm> datatablesTest(HttpServletRequest request){ //获取分页控件的信息 String start = request.getParameter("start"); System.out.println(start); String length = request.getParameter("length"); System.out.println(length); //获取前台额外传递过来的查询条件 String extra_search = request.getParameter("extra_search"); System.out.println(extra_search); //随便组织的查询结果 List<Alarm> list = new ArrayList<Alarm>(); Alarm alarm = new Alarm(); alarm.setLevel(1); alarm.setTotal(100L); list.add(alarm); alarm = new Alarm(); alarm.setLevel(2); alarm.setTotal(100L); list.add(alarm); DatatablesViewPage<Alarm> view = new DatatablesViewPage<Alarm>(); view.setiTotalDisplayRecords(100); view.setiTotalRecords(100); view.setAaData(list); return view; }
DatatablesViewPage的声明如下:
public class DatatablesViewPage<T> { private List<T> aaData; //aaData 与datatales 加载的“dataSrc"对应 private int iTotalDisplayRecords; private int iTotalRecords; public DatatablesViewPage() { } //get set方法 此处省略 }
处理完效果如下:
此处稍微修改了jquery.dataTables.js的内容,使分页的效果成这样。
相关推荐
/datatables 带查询条件java服务端分页处理实例 /datatables 是一个非常流行的基于 jQuery 的 DataTables 插件,它提供了许多实用的功能,如排序、过滤、分页等,今天我们将介绍如何使用 DataTables 实现带查询条件...
服务端分页是在服务器端进行数据的分页处理,而不是在客户端。这样可以避免一次性加载大量数据导致的性能问题。在本项目中,当用户滚动表格或更改每页显示条数时,DataTables会向服务器发送包含当前页码和每页大小...
使用方法: 支持JAVA和PHP两种后台。...分页栏增加跳页功能(直接修改了dataTables.bootstrap.js和dataTables.bootstrap.css) CSS实现单元格超长文字省略号显示 CSS实现单元格连续纯字母数字强制换行显示
datatables+springmvc+bootstrap实现分页,包含数据库 Datatables是一款jquery表格插件。它是一个高度灵活的工具,可以将任何HTML表格添加高级的交互功能。 分页,即时搜索和排序 几乎支持任何数据源:DOM, ...
总的来说,这个教程涵盖了前后端交互的基本流程,从用户在前端输入分页和搜索条件,到后端的处理和数据库查询,再到结果的返回和前端展示。对于Java初学者来说,这是一个很好的实践项目,可以帮助他们理解如何结合...
3. **服务端处理**:在ThinkPHP的控制器中,我们需要接收前端传递的参数,如`draw`(用于验证)、`search`(搜索条件)以及`start`和`length`(分页参数,分别表示当前页开始位置和每页显示条数)。根据这些参数,...
服务器端分页在每次改变页码或搜索条件时向服务器发送请求,获取当前页的数据;客户端分页则将所有数据一次性加载到客户端,然后进行本地处理。这个示例中提到了前后端分页,这意味着项目同时支持这两种方式,可以...
使用DataTable默认的ajax交互功能,对传给后台和从后台获取的数据都有命名格式要求,这样一来耦合度较高,不利于后期扩展,不能...分页栏增加跳页功能(直接修改了dataTables.bootstrap.js和dataTables.bootstrap.css)
本篇将深入讲解 Datatables 分页查询的相关知识。 一、Datatables 官网地址 Datatables 的官方网站是 https://datatables.net/,在这里你可以找到最新的文档、示例、插件以及 API 参考,是学习和使用 Datatables 的...
hibernate分页(无排序,搜索,仅仅分页显示),服务器端分页在datatables上展现,有关 datatables的知识请关注它的官网http://www.datatables.net/,datatables的功能很 全面。 2,建表的sql--studentinfo和插入...
仿jquery.dataTables的分页(查询+排序),jquery插件式开发简单示例。
Java分页控件是Java开发中常用的一种组件,主要用于在大量数据展示时提供翻页功能,提高用户体验。在Web应用中,特别是在数据密集型的应用如电商、报表系统中,分页控件扮演着至关重要的角色。它允许用户按需加载...
最后,编写后端Controller,处理来自DataTables的请求,返回分页和模糊查询的结果。 7. **性能优化** 在实际应用中,除了基本功能外,还需要考虑性能优化,比如使用缓存来减少数据库访问,或者使用懒加载策略只在...
在这个"datatables java后台解析http请求参数demo"中,我们将探讨如何利用Java技术在后台处理来自前端DataTable库的HTTP请求参数。DataTable是一款功能强大的jQuery插件,常用于实现动态、可排序、可搜索的数据表格...
Java分页是数据库查询中非常常见的一种技术,用于在大量数据中有效地展示和导航。在Web应用程序开发中,尤其是在处理用户界面时,分页能够提高用户体验,避免一次性加载过多数据导致页面响应慢或者内存压力过大。这...
以上内容详细介绍了在使用*** MVC和Entity Framework进行服务端分页时,结合jqGrid和jquery Datatables两种流行的前端分页控件需要关注的细节和注意事项,以及如何选择合适的UI框架和处理常见的前端开发问题。
jquery 表格分页处理插件 DataTables 官方最新版本:1.62 作者:Allan Jardine 官網:http://sprymedia.co.uk/article/DataTables 展示:http://sprymedia.co.uk/article/DataTables 一个中文使用案例: ...
4. **交互处理**:利用dataTables提供的API进行交互响应,例如监听排序、分页事件,执行相应的逻辑。 ### 示例代码 ```html <!DOCTYPE html> <script type="text/javascript" src="jquery.js"></script> ...