datatables是jquery的一个插件,但是很是强大,有查询,排序功能,而且很漂亮,最重要的是他自带 了一个分页功能,很是强大
datatables的分页形式有2种:
一种是前台分页,这种方式简单,但是大数据量的时候就是一个问题了;
第二种是服务器端分页,当dataables需要数据的时候会自动的发出请求
前台分页我已经会了,今天准备尝试下服务器端分页.查看了很多资料,发现写的都是前台的js代码
而后台的代码网上的帖子里面都没有涉及到.如果有的话也是取得前台的参数后怎么操作,然而这些肯定都不用说很明白的,取数据不是很麻烦.
但是里面最关键的一步就是前后台的连接部分缺没有涉及到,如果是简单的数据格式的话当然使用request.getParameter("XXX")就可以很简单的获得了.但是当你写前台JS 的时候就会发现前台传递的数据不是简单的name-value格式的数据,二是一个JSONARRAY,这个数据怎么在后台转换成我们可以直接取的数据是一个难点(我使用json不久,不怎么会操作......)
今天我就把我的解析数据的方法记录下来
首先是前台
datatables的配置我就不介绍了,网上一大堆.我只说几个重要的参数
"bServerSide": true, //指定从服务器端获取数据
"sAjaxSource": surl, //获取数据的url (一般是action)
"fnServerData": retrieveData, //获取数据的处理函数
这三个参数我就不一一介绍了,看注释.这三个参数是服务器端分页的必须参数.其中"fnServerData"是调用一个function来实现的,当然你也可以直接写在这里
"fnServerData":function(){.............},
我的fnServerData代码如下:
function retrieveData( sSource, aoData, fnCallback ) {
// 将客户名称加入参数数组
//aoData.push( { "name": "customerName", "value": "asdas" } );//添加自己的额外参数
alert(aoData[0].name);
alert(JSON.stringify(aoData));
$.ajax( {
"type": "get",
"contentType": "application/json",
"url": sSource,
"dataType": "json",
"data": { aoData: JSON.stringify(aoData) }, // 以json格式传递
"success": function(resp) {
fnCallback(resp.aaData);
}
});
}
这里我说明一个情况,我一开始的时候是使用"POST"方法来提交的,但是发现在后台怎么就是无法获取"aoData",一直是null.而采用"get"的时候就是OK 的,哪位能不能解释下!!!!小弟感激不尽阿!
里面的JSON.stringify是js自带的能够把支付传转换成json对象的方法.这里不必在意.
比如我直接alert(doData);的话,输出的数据如下:
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
然而我alert(JSON.stringify(aoData));输出数据如下:
[{"name":"sEcho","value":1},{"name":"iColumns","value":4},{"name":"sColumns","value":""},{"name":"iDisplayStart","value":0},{"name":"iDisplayLength","value":50},{"name":"mDataProp_0","value":0},{"name":"mDataProp_1","value":1},{"name":"mDataProp_2","value":2},{"name":"mDataProp_3","value":3},{"name":"iSortCol_0","value":0},{"name":"sSortDir_0","value":"asc"},{"name":"iSortingCols","value":1},{"name":"bSortable_0","value":true},{"name":"bSortable_1","value":true},{"name":"bSortable_2","value":false},{"name":"bSortable_3","value":false}]
这个就是datatables传递给后台的数据.
前台的处理就写到这里,接下来看后台action里面的操作:
我导入的JSON包是如下2个:
import org.json.JSONArray;
import org.json.JSONObject;
public ActionForward getDataNoVerify(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)throws Exception {
AppManager appmanager=(AppManager) getBean(AppManager.class.getName());
String jsondata=request.getParameter("aoData");
response.setCharacterEncoding("UTF-8");
PrintWriter out = null;
String json = null; // 返回的json数据
try {
out = response.getWriter();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
JSONArray jsonarray=new JSONArray(jsondata);
for(int i=0;i<jsonarray.length();i++) //从传递参数里面选出待用的参数
{
JSONObject obj=(JSONObject)jsonarray.get(i);
if(obj.get("name").equals("sEcho"))
sEcho=obj.get("value").toString();
if(obj.get("name").equals("iDisplayStart"))
iDisplayStart=obj.get("value").toString();
if(obj.get("name").equals("iDisplayLength"))
iDisplayLength=obj.get("value").toString();
//System.out.println("name:"+obj.get("name")+";value:"+obj.get("value"));
}
List<App> list=appmanager.getByVerify(1, Integer.parseInt(iDisplayStart), Integer.parseInt(iDisplayLength)); //调用service获取数据
int count=appmanager.count(1);
json=tojson(list,count);
System.out.println("json:"+json);
out.println(new JSONObject(json));
return null;
}
/**
* 进行返回数据前的json转换
* @param list
* @return
*/
public String tojson(List<App> list,int count)
{
String json = null; // 返回的json数据
Gson gjson=new Gson();
String aaData=gjson.toJson(list);
json = "{\"sEcho\":"+sEcho+",\"iTotalRecords\":"+count+",\"iTotalDisplayRecords\":"+count+",\"aaData\":"+aaData+"}";
return json;
}
特别注意的是里面的iTotalRecords和iTotalDisplayRecords是整数,不要写成
json = "{\"sEcho\":"+sEcho+",\"iTotalRecords\":\""+count+"\",\"iTotalDisplayRecords\":\""+count+"\",\"aaData\":"+aaData+"}";
参考文献有如下:
http://small-ant.iteye.com/blog/1513171
http://topic.csdn.net/u/20110803/18/5e3893ff-e2e3-49fe-86f5-5f4fb3c807d0.html
分享到:
相关推荐
hibernate分页(无排序,搜索,仅仅分页显示),服务器端分页在datatables上展现,有关 datatables的知识请关注它的官网http://www.datatables.net/,datatables的功能很 全面。 2,建表的sql--studentinfo和插入...
分页,即时搜索和排序 几乎支持任何数据源:DOM, javascript, Ajax 和 服务器处理 支持不同主题 DataTables, jQuery UI, Bootstrap, Foundation 各式各样的扩展: Editor, TableTools, FixedColumns …… 丰富多样...
datatables+springmvc+bootstrap实现分页,包含数据库 Datatables是一款jquery表格插件。它是一个高度灵活的工具,可以将任何HTML表格添加高级的交互功能。 分页,即时搜索和排序 几乎支持任何数据源:DOM, ...
服务器分页 自行控制和自定义遮罩效果 生成自定义效果的单元格(在线离线) 生成复选框单元格 响应复选框选择事件 生成操作按钮单元格 响应操作栏按钮点击事件 响应行点击事件 渲染回调事件(默认选中第一行) 分页...
本篇文章主要介绍了使用vue和datatables进行表格的服务器端分页实例代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
服务器分页 自行控制和自定义遮罩效果 生成自定义效果的单元格(在线离线) 生成复选框单元格 响应复选框选择事件 生成操作按钮单元格 响应操作栏按钮点击事件 响应行点击事件 渲染回调事件(默认选中第一行) 分页...
最近看了下datatables,模仿写了一个小例子,和大家分享一下。效果图如下 (此图片来源于网络,如有侵权,请联系删除! ) jsp代码: <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>...
jQuery 的插件 dataTables 是一个优秀的表格插件,提供了针对表格的排序、浏览器分页、服务器分页、筛选、格式化等功能。
jQuery 的插件 dataTables 是一个优秀的表格插件,提供了针对表格的排序、浏览器分页、服务器分页、筛选、格式化等功能。dataTables 的网站上也提供了大量的演示和详细的文档进行说明,但是官网是PHP的例子,特意做...
jQuery 的插件 dataTables 是一个优秀的表格插件,提供了针对表格的排序、浏览器分页、服务器分页、筛选、格式化等功能。 分页、排序、检索 Datatable与json之间数据转换,一个详细完整的例子!
ajax-datatables-rails是DataTables ajax方法的包装,该方法允许与Rails应用程序中的服务器端分页同步。 它受此启发。 我需要在正在进行的几个项目中实施类似的解决方案,因此我将解决方案提取到了gem中。 乔尔·...
jQuery Datatables服务器端处理 ASP NET组件,为著名的jQuery表插件添加了自动服务器端处理功能。 它使用IQueryable接口来构造查询表达式到您的数据集合,可以由诸如实体框架的ORM处理。 支持: 分页; 搜索; ...
jQuery 的插件 dataTables 是一个优秀的表格插件,提供了针对表格的排序、浏览器分页、服务器分页、筛选、格式化等功能。接下来通过本文给大家介绍jQuery插件datatables使用教程,感兴趣的朋友一起学习吧
它提供了一种在服务器端实现动态多列搜索和排序以及分页和excel导出的快速方法。 这可以通过用简单的属性修饰模型属性来完成。注意:本教程包含AJAX GET和AJAX POST服务器端配置的示例。 警告:如果我们严格遵循...
jquery-datatables1.10-mvc5-服务器端 JQUERY DATATABLES 1.10+和ASP.NET MVC 5服务器端 Datatables是jQuery Javascript库的高度灵活的插件。 数据表将高级交互控件(如分页,搜索和多列排序)添加到任何HTML表中。 ...
几乎支持任何数据源:DOM, javascript, Ajax 和 服务器处理 支持不同主题 DataTables, jQuery UI, Bootstrap, Foundation 各式各样的扩展: Editor, TableTools, FixedColumns …… 丰富多样的option和强大的API ...
kindEdit以及datatables的使用,前后台交互,对clob大数据的处理,还有oracle数据库分页,模糊查询,以及后台所有的增删改查,创作模块的页面设计,与使用
蠕虫在Golang中使用Datatables分页先决条件 :clipboard: 数据库兼容:Postgres(稳定),SQLite(不带REGEXP) 显然在golang项目中使用它格姆包( )( ) Beego包( )( )安装 :wrench: 使用下一个命令安装: go ...
DataTables.net功能可变长度分页即时过滤多列排序与数据类型检测智能处理列宽显示几乎所有数据源中的数据表格视口的滚动选项完全国际化jQuery UI 支持坚如磐石-由2900项套件支持各种各样的插件公司。 编辑器,...