首页 > 经验记录 > DataTables前端插件以及其使用方式详解

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: "" //筛选之后的左下角筛选提示,
        }
    });
}

 
 

           


CAPTCHAis initialing...
EA PLAYER &

历史记录 [ 注意:部分数据仅限于当前浏览器 ]清空

      00:00/00:00