不得不说这个插件很方便,几千行的数据展示速度很快,搜索也不损耗服务器性能,分页也没的说。但是数据量过大时就需要用到服务器模式了,找了半天没有发现很好的例子。官网上的比较简陋。
有人说这是前端的事情,不这也是后端需要了解的知识。
不多说了直接上代码
前端:
/**
* Created by 大师兄
* 派系: 神秘剑派
* 技能: zxc秒杀
* Date: 2018/3/22
* Time: 11:22
* QQ: 997823131
*/
defined('InCosmos') or exit('Access Invalid!');?>
function show_info(e){
var table_data = $('#dataTables-example').DataTable();
var data = table_data.row($(e).parent().parent('tr')).data(); // 获取列表
var store_id = data['area_id'];
console.log(store_id);
}
$(function(){
$('#dataTables-example').DataTable(//创建一个Datatable
{
ajax : {//通过ajax访问后台获取数据
"url": ApiUrl + "/index.php?act=admin_user&op=user_list",//后台地址
"type":'GET',
"dataSrc": function (json) {//获取数据之后处理函数,jason就是返回的数据
var dataSet = new Array();
dataSet=json.data;
return dataSet;//再将数据返回给datatable控件使用
}
},
serverSide: true,//如果是服务器方式,必须要设置为true
processing: true,//设置为true,就会有表格加载时的提示
columns : [ {"data" : "area_id"}, //各列对应的数据列
{"data" : "area_name"},
{"data" : "area_parent_id"},
{"data" : "area_sort"},
{"data" : "area_deep"},
{"data" : "area_deep"},
{"data" : "area_deep"},
{"data" : null} ],
columnDefs : [ {//列渲染,可以添加一些操作等
targets : 7,//表示是第8列,所以上面第8列没有对应数据列,就是在这里渲染的。
render : function(data, type, row) {//渲染函数
var html = ' 修改';//这里加了两个button,一个修改,一个删除
return html;//将改html语句返回,就能在表格的第8列显示出来了
}
},{
orderable:false,//禁用排序
targets:[1,2,3,5,6] //指定的列
}
],
"language": {//国际化
"processing":"
正在玩命加载中。。。。请稍后!
",//这里设置就是在加载时给用户的提示"lengthMenu": "_MENU_ 条记录每页",
"zeroRecords": "没有找到记录",
"info": "第 _PAGE_ 页 ( 总共 _PAGES_ 页 )",
"infoEmpty": "无记录",
"infoFiltered": "(从 _MAX_ 条记录过滤)",
"paginate": {
"previous": "上一页",
"next": "下一页"
}
},
"dom": "r>" +"t" +">",//给表格改样式
initComplete : function() {//表格完成时运行函数
// $("#mytool").append('添加');//这里在表格的上面加了一个添加标签
}
});
});