AdminLTE3 Table插件

1. 基本依赖

官网:https://datatables.net/

-- adminlte 之前

<!-- DataTables -->
<link rel="stylesheet" href="./plugins/datatables-bs4/css/dataTables.bootstrap4.min.css">
<link rel="stylesheet" href="./plugins/datatables-responsive/css/responsive.bootstrap4.min.css">

<!-- DataTables -->
<script src="./plugins/datatables/jquery.dataTables.min.js"></script>
<script src="./plugins/datatables-bs4/js/dataTables.bootstrap4.min.js"></script>
<script src="./plugins/datatables-responsive/js/dataTables.responsive.min.js"></script>
<script src="./plugins/datatables-responsive/js/responsive.bootstrap4.min.js"></script>

2. 初始化

所有配置:https://datatables.net/reference/option/

$('#example').DataTable();
$('#example').DataTable({
  "paging": true,
  "lengthChange": false,
  "searching": false,
  "ordering": true,
  "info": true,
  "autoWidth": false,
  "responsive": true,
    
    lengthChange: true, // 分页下拉框
    info: true, // `显示第 1 至 5 项结果,共 5 项`
});
-- 固定高度,不分页
$('#example').DataTable({
    "scrollY": "200px",
    "scrollCollapse": true,
    "paging": false
});
-- 远程数据
$('#example').DataTable({
	// ajax: './data.txt',
	data: dataSet,
	columns: [
		{ title: "Name", data: "Name" },
		{ title: "Position", data: "Position" },
	]
});

3. 全局设置

中文:https://datatables.net/plug-ins/i18n/Chinese

// 中文
$.fn.dataTable.defaults.oLanguage = {
	"sProcessing": "处理中...",
	"sLengthMenu": "显示 _MENU_ 项结果",
	"sZeroRecords": "没有匹配结果",
	"sInfo": "显示第 _START_ 至 _END_ 项结果,共 _TOTAL_ 项",
	"sInfoEmpty": "显示第 0 至 0 项结果,共 0 项",
	"sInfoFiltered": "(由 _MAX_ 项结果过滤)",
	"sInfoPostFix": "",
	"sSearch": "搜索:",
	"sUrl": "",
	"sEmptyTable": "表中数据为空",
	"sLoadingRecords": "载入中...",
	"sInfoThousands": ",",
	"oPaginate": {
		"sFirst": "首页",
		"sPrevious": "上页",
		"sNext": "下页",
		"sLast": "末页"
	},
	"oAria": {
		"sSortAscending": ": 以升序排列此列",
		"sSortDescending": ": 以降序排列此列"
	}
};
// 中文,默认属性
$.extend(true, $.fn.dataTable.defaults, {
    "searching": false,
    "ordering": false,
    "language": {
        "url": "//cdn.datatables.net/plug-ins/1.10.21/i18n/Chinese.json"
    }
});

4. 绑定事件

var table = $('#example').DataTable();
$('#example tbody').on('click', 'tr', function () {
    var data = table.row(this).data();
    alert('You clicked on ' + data[0] + '\'s row');
});

5.列渲染

columnDefs: [
    // 格式化
    {
        render: function (data, type, row) {
            return data + ' (' + row[3] + ')';
        },
        targets: 0
    },
    // 隐藏
    { visible: false, targets: [3] }
]

添加按钮

// 最后一列
"columnDefs": [{
    "targets": -1,
    "data": null,
    "defaultContent": "<button class='btn btn-info btn-sm'>Click!</button>"
}]
// 绑定事件
 $('#example tbody').on('click', 'button', function () {
     var data = table.row($(this).parents('tr')).data();
     alert(data.name + "'s salary is: " + data.salary);
 });

数据嵌套

// record
{
    "name": "Tiger Nixon",
    "hr": {
        "position": "System Architect",
        "salary": "$3,120",
        "start_date": "2011/04/25"
    },
    "contact": [
        "Edinburgh",
        "5421"
    ],
    "fruit": [
        "apple",
        "orange"
    ]
}
// 格式化
"columns": [
    { "data": "name" },
    { "data": "hr.position" },
    { "data": "contact.0" },
    { "data": "contact.1" },
    { "data": "hr.start_date" },
    { "data": "hr.salary" },
    { "data": "fruit[, ]" },	// 用,分隔
]

6. 数据请求

可以前端分页,也可以 服务器分页(包括排序,过滤)

// 默认返回格式 
{
	draw: 1,	// Datatables发送的draw是多少那么服务器就返回多少
	recordsTotal: 10,	// 数据库里总共记录数
	recordsFiltered: 10,	// 过滤后的记录数
	data: [...],	// 可以通过ajax.dataSrc更改字段名称
	error: ''	// 可选
}
// 大量数据渲染
"deferRender": true
// 加载等待提示
"processing": true,
// 服务器模式
"serverSide": true,
// 请求参数
ajax: {
	url: 'xxx'
	type: 'POST',
	data:
}
// 刷新
table.ajax.reload();

Extensions

1. Buttons

<link rel="stylesheet" href="./plugins/datatables-buttons/css/buttons.bootstrap4.css">

<!-- 依赖 -->
<script src="./plugins/jszip/jszip.js"></script>
<script src="./plugins/pdfmake/pdfmake.js"></script>
<script src="./plugins/pdfmake/vfs_fonts.js"></script>

-- 内置button
<script src="./plugins/datatables-buttons/js/dataTables.buttons.js"></script>
-- 样式
<script src="./plugins/datatables-buttons/js/buttons.bootstrap4.js"></script>
-- 扩展button
<script src="./plugins/datatables-buttons/js/buttons.html5.js"></script>

使用

// 可选按钮 DataTable.ext.buttons
$('#example').DataTable({
	dom: 'Bfrtip',	// 配置 https://datatables.net/reference/option/dom
	buttons: [
		'copy',
		'excel',
		'csv',
		'pdf',
        // 编辑默认按钮
        {
            extend: 'copy',
            text: '复制'
        },
        // 自定义按钮
        {
            text: 'Reload',
            action: function (e, dt, node, config) {
                dt.ajax.reload();
            }
        }
	]
});

2. Select

<link rel="stylesheet" href="./plugins/datatables-select/css/select.bootstrap4.css">

<script src="./plugins/datatables-select/js/dataTables.select.js"></script>

-- 可选,没发现有什么区别
<script src="./plugins/datatables-select/js/select.bootstrap4.js"></script>

使用

let table = $('#example').DataTable({
	select: true
});
var rows = table.rows({ selected: true });
console.log(rows.data())
console.log(rows.count())

关联 buttons

$('#example').DataTable({
	dom: 'Bfrtip',
	buttons: [
		'selected',
		'selectedSingle',
		'selectAll',	// 全选
		'selectNone',	// 反选
		'selectRows',
		'selectColumns',
		'selectCells'
	],
	select: true
});
// 全选、反选
table.rows().select();
table.rows().deselect();
// 可以只导出select内容

3. FixHeader

<link rel="stylesheet" href="./plugins/datatables-fixedheader/css/fixedHeader.bootstrap4.css">

<script src="./plugins/datatables-fixedheader/js/dataTables.fixedHeader.js"></script>

使用

let table = $('#example').DataTable({
    paging: false,
    fixedHeader: true
});
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值