DataTables前端插件以及其使用方式详解
作为一个表格工具可以说是很强大了
在公司里用了几天,还算是比较熟练了。
记录一下
首先前端得有个表格。
我这用的JQuery选中的表格#table_plan_all就是我这个代码对应的表格。
最主要的参数,data,该参数后面接的是表格中需要展示的数据。JSON数组格式。我这里初始化为一个空数组是因为业务需要。搜索完毕后在重新加载。
一般先获取到JSON数组格式的数据,直接初始化datatbles。
columns,看名字就明白,列
该参数主要用来定义该表格中每列的数据(首先页面的table得有个表头。th数量和这里面放的长度要一致)。
会从数组中的每一个JSON对象中取出来。
columnDefs该参数则是要对数据进行的处理,不进行处理的话就直接将columns定义的列对应属性往td里塞。
该参数下边还有几个参数
targets:对哪列的数据进行处理,datatables索引从0开始。负数就是倒着数从1开始,比如-1是倒数第一行
render:进行处理的方法,写个function
该function可以注入很多参数。我只知道第一个参数是columns定义的对象属性。第三个可以直接通过该参数点出该行其他列的数据,假设第三个入参叫row,则可以书写:row.xxxx,然后获取到该行叫做xxxx的那列数据
在下面的不需要管了,直接用就行。我是没有研究
示例代码:
//初始化datatables
function dataTableInit(){
var dataName = $("#table_plan_all").DataTable({
data: [],
"columns": [
{"data": "planId"},
{"data": "userNick"},
{"data": "planTypeEnum"},
{"data": "createTime"},
{"data": "planTime"},
{"data": "FastListingPlanStausEnum"},
{"data": "planId"}
],
"columnDefs": [
{
"targets": [3, 4],
"render": function (data) {
if (data == null) {
return '';
}
return new Date(data).Format("yyyy-MM-dd HH:mm:ss");
}
},
{
"targets": 5,
"render": function (data) {
if (data == null) {
return '待执行';
}
return data;
}
},
{
"targets": -1,
"render": function (data) {
var delBtn = '<span class="btn btn-primary btn-sm" ' +
'onclick="deleteListPlan(this,' + data + ')">删除计划</span>';
return delBtn;
}
}
],
//lengthMenu: [5, 10, 20, 30],
// 这里也可以设置分页,但是不能设置具体内容,只能是一维或二维数组的方式,所以推荐下面language里面的写法。
'processing': true,
'paging': true,
pagingType: 'full_numbers',
'lengthChange': true,
'searching': true,
'ordering': true,
'autoWidth': false,
'responsive': true,
'aaSorting': [[1, "desc"]],
language: {
lengthMenu: '<select class="form-control input-xsmall">' + '<option value="5">5</option>'
+ '<option value="10">10</option>' + '<option value="20">20</option>' + '<option value="30">30</option>'
+ '<option value="50">50</option>' + '</select>条记录',//左上角的分页大小显示。
paginate: {//分页的样式内容。
previous: "上一页",
next: "下一页",
first: "第一页",
last: "最后"
},
//table tbody内容为空时,tbody的内容。
zeroRecords: '<img src="/dist/img/status-no-data.png" style="margin-top:50px;max-width:90px">'
+ '<div style="margin-top:50px;"><span>没有数据!</span></div>',
//下面三者构成了总体的左下角的内容。
info: "总共_PAGES_ 页,显示第_START_ 到第 _END_ ,筛选之后得到 _TOTAL_ 条,初始_MAX_ 条 ",
infoEmpty: "0条记录", //筛选为空时左下角的显示。
infoFiltered: "" //筛选之后的左下角筛选提示,
}
});
}
