jQuery-DataTables 跨页全选

最近要做一个全选框,想实现全选/多选/任意全不选 功能。因为之前用datatables实现了大部分功能,想直接看有没有合适的接口,结果踩坑踩了一下午。记录一下正确的姿势。

坑1:版本

需要的DataTables版本不能太低,好像说不能低于 1.10.6(具体文档找不到了,我用1.10.16是可以的)

坑2:引入顺序

select似乎要在datatables之后引入,如下:

    
    

注意了这两个坑,基本雷就踩得差不多了。下面介绍正确姿势。

正确姿势

hello代码

首先引入js。如坑2所示。
然后在js中创建table:

var table = $('#example').DataTable( {
                        //  注意,这里一定要是 DataTAble, 不要写成 dataTable
        dom: 'Bfrtip',
        select: true,
        buttons: [
            {
                text: 'Select all',
                action: function () {
                    table.rows().select();
                }
            },
            {
                text: 'Select none',
                action: function () {
                    table.rows().deselect();
                }
            }
        ]
    } );

这里其实全选的关键并不是buttons,
而是table.rows().select()。所以你可以单独写一个button来完成这个动作。这样,跨页全选就算完成了。

设置为多选

默认情况,select会将DataTable设置成单选,所以如果要多选,需要把select的值设置成'multi',如

var table = $('#example').DataTable( {
        dom: 'Bfrtip',
        select: 'multi',
        buttons: [
            {
                text: 'Select all',
                action: function () {
                    table.rows().select();
                }
            },
            {
                text: 'Select none',
                action: function () {
                    table.rows().deselect();
                }
            }
        ]
    } );

获取表中数据

可以通过 table.rows({selected: true}).data()获取表中的数据。以此方法获取的数据是一个list,形如:

[
{'name': 'Gourdin', 'race': 'orc'},
{'name': 'Illidan', 'race': 'elf'},
]

设置选中状态

css可以设置选中状态

.dataTable tbody tr.selected td {background-color: #78dbff;}

References:
https://datatables.net/extensions/select/examples/api/select.html
https://datatables.net/extensions/select/examples/api/get.html

你可能感兴趣的:(jQuery-DataTables 跨页全选)