学习笔记:DataTables之数据读取和操作(java对象转换为json对象)
2015-09-30 21:55
519 查看
无意中发现jquery插件中有一个用于表格的,自动分页、搜索、设置每页显示记录数,太方便了。于是尝试着去使用,可是,遇上问题了不仅一点点。
由于后台从数据库查找的数据被封装成了一个java对象(例Employee),可是,dataTables接受的数据源是javascript的数据类型,而且是一个数组,数组里面的内容可以是数组、对象、实例。我的想法是,把java对象转换为json(用gson)。
但是,问题又来了,网上大多数例子都是使用数组为例,很少使用json对象的,而且官网上的例子用起来总出问题。
如果HTML已定义好表格的第一行,而且数据和已定义的列是对应,那就绑定数据就行了,可是,通常情况下,没这么如意,我们的数据源常常有一堆我们不需要的东西。
以下是datatables官方的例子,可是我试了几次,都没办法读出数据,不知道是不是我下载的版本的问题
于是,综合网上找到的信息,最后把改成aaData:data,aoColumns:[…]就好了
下一个问题,由于方便结合数据库处理数据数据,当然最好保留第个对象的ID,然后每次取ID去数据库操作就可以了。于是,把第一列设置为ID列,并隐藏它,最后添加一列用来放控件
最后一列添加了一个按键,那么,每次点击按键,怎么取得这一行的对象的ID?
我们设置了第一列为ID列,因此,只需获取所选那一行第一个数据就行了,方法如下:
由于后台从数据库查找的数据被封装成了一个java对象(例Employee),可是,dataTables接受的数据源是javascript的数据类型,而且是一个数组,数组里面的内容可以是数组、对象、实例。我的想法是,把java对象转换为json(用gson)。
但是,问题又来了,网上大多数例子都是使用数组为例,很少使用json对象的,而且官网上的例子用起来总出问题。
//模拟数据 var aDataSet = [{ "id": "0", "name": "Tiger Nixon", "position": "System Architect", "salary": "$3,120", "start_date": "2011/04/25", "office": "Edinburgh", "extn": "5421" }, { "id": "1", "name": "Garrett Winters", "position": "Director", "salary": "$5,300", "start_date": "2011/07/25", "office": "Edinburgh", "extn": "8422" }];
如果HTML已定义好表格的第一行,而且数据和已定义的列是对应,那就绑定数据就行了,可是,通常情况下,没这么如意,我们的数据源常常有一堆我们不需要的东西。
以下是datatables官方的例子,可是我试了几次,都没办法读出数据,不知道是不是我下载的版本的问题
$('#example').DataTable( { data: data, columns: [ { data: 'name'}, { data: 'position'}, { data: 'salary'}, { data: 'office'} ] } );
于是,综合网上找到的信息,最后把改成aaData:data,aoColumns:[…]就好了
"aaData": data, "aoColumns": [ { data: 'name'},//这里还可以用mDataProp { data: 'position'}, { data: 'salary'}, { data: 'office'} ]
下一个问题,由于方便结合数据库处理数据数据,当然最好保留第个对象的ID,然后每次取ID去数据库操作就可以了。于是,把第一列设置为ID列,并隐藏它,最后添加一列用来放控件
columnDefs": [ { "targets": -1, //最后一列添加删除按键 "data": null, "defaultContent": "<button id='delrow' class='btn btn-primary' type='button'>delete</button>",//自定义内容 }, { "targets": 0, //第一列隐藏 "data":"id", "visible": false,//不可见 "searchable": false }]
最后一列添加了一个按键,那么,每次点击按键,怎么取得这一行的对象的ID?
我们设置了第一列为ID列,因此,只需获取所选那一行第一个数据就行了,方法如下:
$('.dataTables-example tbody').on( 'click', 'button#delrow', function () { var data = tables.row( $(this).parents('tr') ).data();//所选择的行的数据 alert(data.id);//测试 //网上的例子多数是用data[0]的方法,因为我的数据源是由java对象得到的json,所以直接用操作对象的方法 });
相关文章推荐
- 浅析java异常处理机制——理论篇
- JAVA 输入输出
- java 中的e.printStackTrace()方法
- Java基础知识强化之IO流笔记15:递归之删除带内容的目录案例
- java篇 【4】数据类型
- Java多线程[4]:线程间通信
- Java语言基础(一)
- JAVA学习笔记 -- 包资源文件jar包裹
- Web开发:分页技术的实现(中)——Struts2+json
- JavaAPI_2
- test9.15
- test9.14
- Java基础知识强化之IO流笔记14:递归之输出指定目录下所有java文件绝对路径的案例
- java多线程总结
- 深入Java关键字instanceof
- 【原创】Eclipse中Android项目引用
- 应用spring mvc 在controller间跳转 重定向
- test9.13
- Java文件操作2
- Java文件操作1