DataTable如何添加多选,全选

官方文档:https://datatables.net/extensions/select/examples/api/select.html

一、首先展示效果图


效果图

开始之前先导包!


<link rel="stylesheet" type="text/css" href="${request.contextPath}/library/datatables/dataTables.select.min.css"/>
<script type="text/javascript" src="${request.contextPath}/library/datatables/dataTables.select.min.js"></script>

第一步:先写html


//在你需要添加按钮的地方加上这两个按钮
<button type="button" class="btn btn-danger waves-effect" id="deleteAll" style="width:80px;margin-right:10px">全选</button>
<button type="button" class="btn btn-danger waves-effect" id="deleteSelect">批量删除</button>


<table class="table table-bordered table-striped table-hover dataTable" id="example"  style="width: 100%">
<thead>
  <tr>
    <th class='th'><input type="checkbox" class="checkall" /></th>//这行就是留位置,下面的根据各自项目需要添加
    <th>编号</th>
    <th>区域</th>
    <th>位置</th>
    <th>类型</th>
    <th>关联</th>
    <th>操作</th>
</tr>
</thead>

第二步:写js文件

$(function() {
    searchFlag = false;
    table = $(".dataTable")
            .DataTable(
                    {
                        "searching" : false,
                        "lengthChange" : false,
                        "pageLength" : 10,
                        ordering : false,
                        "serverSide" : true,
                        ajax : {
                            url : contextPath + '/mapPoint/list',
                            dataSrc : 'data',
                            data : function(data) {
                                if (searchFlag) {
                                    buildSearchParameters(data);
                                }
                            }
                        },
                        columns : [ {
                            "data" : null
                        }, {
                            "data" : "id"
                        }, {
                            "data" : "region"
                        }, {
                            "data" : "position"
                        }, {
                            "data" : "type"
                        }, {
                            "data" : "relationName"
                        }, {
                            "data" : null
                        } ],
                        columnDefs : [
                                {//这个就是用来画第一列的小方块多选框的
                                    orderable : false,
                                    className : 'select-checkbox',
                                    targets : 0
                                },
                                {
                                    targets : -1,
                                    render : function(data, type, row, meta) {
                                        var html = '<button class="btn btn-sm btn-primary waves-effect" value="'
                                                + row.id
                                                + '" onclick="updateMapPoint('
                                                + row.id
                                                + ')">编辑</button>&nbsp;&nbsp;&nbsp;'
                                                ;
                                        return html;
                                    }
                                },
                                {
                                    targets : 0,//代表第0行
                                    searchable : false,
                                    orderable : false,
                                    className : 'dt-body-center',
                                    render : function(data, type, row) {
                                        return '<input class="checkchild" type="checkbox"/>';
                                    }
                                } ],
                        select : {
                            style : 'multi',
                            selector : 'td:first-child'
                        },
                        language : {
                            "lengthMenu" : "_MENU 条记录每页",
                            "zeroRecords" : "没有找到记录",
                            "info" : "记录数:_TOTAL_",
                            "infoEmpty" : "无记录",
                            "infoFiltered" : "(从 _MAX_ )条记录过滤",
                            "paginate" : {
                                "previous" : "上一页",
                                "next" : "下一页"
                            }
                        }
                    })
    $('#deleteSelect').click(function() {//删除
        var array = new Array();
        array = table.rows({selected : true}).data().toArray();
        if(array.length==0){//如果一个没有勾选
            swal({    //提示框
                title : "批量删除失败",
                text : "请先勾选需要删除的数据",
                type : "error",
                showConfirmButton : false,
                timer : 2000
            });
        }else{
        swal({
            title : "删除账号",
            text : "<span style='color:#F44336;'>删除操作后该记录将被删除,并且无法恢复</span>",
            type : "info",
            showCancelButton : true,
            confirmButtonColor : "#2196F3",
            confirmButtonText : "确定",
            cancelButtonText : "取消",
            closeOnConfirm : false,
            html : true
        }, function() {
            for (var i = 0; i < array.length; i++) {
                deleteMapPoint(array[i].id)//确定删除,则执行删除函数
            }
        });
        }
    })
    $('#deleteAll').click(function() {//全选
            flag++;
            if(flag%2==0){
                table.rows().select().data().toArray();
            }else{
                 table.rows().deselect();
                 }
    
    })
});

第三步:写js文件中的deleteMapPoint函数

function deleteMapPoint(id) {
    $.ajax({
        url : contextPath + "/mapPoint/delete/" + id,
        cache : false,
        dataType : "json",
        success : function(result) {
            if (result.code == 1) {
                swal({
                    title : "删除账号",
                    text : "删除账号成功",
                    type : "success",
                    showConfirmButton : false,
                    timer : 1000
                });
                table.ajax.reload();
            }
        }
    });
}

应该没啦。完工~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,504评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,434评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,089评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,378评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,472评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,506评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,519评论 3 413
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,292评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,738评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,022评论 2 329
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,194评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,873评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,536评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,162评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,413评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,075评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,080评论 2 352