基于bootstrap样式的 自定义 dataTable

我是一名 从事大厂的 web 开发高级开发工程师,平常就喜欢提高工作效率偷懒,结合国内外的各种table表格生成器,的的优缺点,自己写一个 dataTable表格生成器,已经经过大项目实践,觉得好点个赞,想要什么功能,就在下面给我留了,我来迭代实现

已经开源 github 地址: https://github.com/abook23/dataTable

预览地址 http://abook23.com:8081/login

用户名密码:system/system

https://download.csdn.net/download/abook24/12274196

项目js引入

<link href="/page/datatable/datatable.css" rel="stylesheet" type="text/css">
<script src="/page/datatable/datatable.js"></script>
<script src="/page/datatable/datatable-plug.js"></script>
<!--    时间选择器 可以自定义-->
<script src="/js/laydate/laydate.js"></script>

一句话生成查询条件

{search: true},

一句话时间选择器

type: 'dateTime', search: true,

可以自定义成你们系统的时间选择器
image.png

一句话下拉框

option: [{'name': '前台用户', 'value': 1}, {'name': '后台用户', 'value': 2}],

image.png

一句话添加按钮

button: [
            {name: "add", text: "新增",class: 'btn-info', click: "addPage()"},
            {name: "edit", text: "编辑",class: 'btn-info', click: 'editPage()'},
            {name: "del", text: "删除", class: 'btn-warning',click: 'delUser()'}
        ],

一句话的功能太多了

  • 编辑行
  • 自定义子表,自定义行详情,
  • 等等,自己往下看吧

1.png

数据格式

{
data: []
totalElements: 10001
totalPages: 667
}

简洁

var table = $('#table').dataTable({
        url: "/user/list",
        no: true,//默认值 false
        button: [
            {name: "add", text: "新增",class: 'btn-info', click: "addPage()"},
            {name: "edit", text: "编辑",class: 'btn-info', click: 'editPage()'},
            {name: "del", text: "删除", class: 'btn-warning',click: 'delUser()'}
        ],
        columns: [
            {field: 'userId', name: 'id',},
            {field: 'userName', name: '用户名', search: true,},
            {
                field: 'type', name: '用户类型', search: true,
                option: [{'name': '前台用户', 'value': 1}, {'name': '后台用户', 'value': 2}],
            },
            {
                field: 'status', name: '状态', search: true,
                option: [{'name': '有效', 'value': 1}, {'name': '禁用', 'value': 0}],
            },
            {
                field: 'createTime', name: '时间', type: 'dateTime', search: true,
                sort: true,
                formatter: function (value, rowData, rowIndex) {
                    return rowData.userInfo.createTime;
                }
            },
            // {
            //     name: "操作",
            //     rowInfo: false,//详情中不显示
            //     export: false,//导出 默认true
            //     formatter: function (value, rowData, rowIndex) {
            //         var edit = $('<button class="btn btn-default btn-sm"></button>').text('编辑');
            //         var save = $('<button class="btn btn-default btn-sm"></button>').text('保存').hide();
            //         edit.click(function () {
            //             table.editRow(rowIndex);
            //             edit.hide();
            //             save.show();
            //         });
            //         save.click(function () {
            //             table.editRow(rowIndex, false);
            //             edit.show();
            //             save.hide();
            //         });
            //         return [edit, save];
            //     }
            // }
        ],
    });
    table.onClickRow(function (index, row) {
        rowData = row
    });

=======

表格参数

名称类型默认示例描述
urlstring必填/user/list服务器地址
dataarray[ ]本地数据
dataSrcStringdata数据来源
paramobject{id:5,type:6}参数
nobooleantrue行编号, false不显示
radiobooleanfasle点选框
checkboxbooleanfalse多选框
rowInfoboolean Functionfalsefunction(index, rowData){ return obj }在这里插入图片描述
searchbooleantrue自动生成 搜索框,具体生成规则 参考 columns
exportExcelbooleanfalse导出表格
pageSizeint15每页请求条数
pageSizeMenuboolean/array[15, 20, 50, 100][15, 20, 50, 100]请求数量下拉框 true or [] 时显示
addRowbooleanfalse显示添加行菜单
buttonarray[][{name: "add", text: "新增", class: 'btn-info', click: "addPage()"} ]name: name属性
showToolButtonbooleantruefalsefalse 不显示table 生成的按钮
columnsarray必填[]列配置项,详情请查看列参数表格
formatterfunction在这里插入图片描述value:当前字段的值

formatter

formatter: function (value, rowData, rowIndex) {
    if (value == 0) {
        return '<font color="#d9534f">禁用</font>';
    } else {
        return '<font color="#5cb85c">启用</font>';
    }
}

列表配置columns

名称类型默认示例描述
fieldstringuserId设定字段名。字段名的设定非常重要
namestring用户ID标题名
widthint/string40/80px设定列宽,若不填写,则自动分配;若填写,则支持值为:数字、百分比
searhbooleanfalse自动生成搜索框
typestringinput设定列类型,搜索框会自动生成相应的类型,可选值有:
sortbooleanfalse排序
editbooleantrue是否可以编辑行: table.editRow(rowIndex)
optionarray[ ][{‘name’: ‘有效’, ‘value’: 1}, {‘name’: ‘禁用’, ‘value’: 0}]在这里插入图片描述
urstring/user/userTypetype 为select有效,自动追加到 option input:输入框 select:下拉框 参考select data: yyyy-mm-dd dataTime: yyyy-mm-dd hh:ii
rowInfobooleantrue默认展示,如果是操作列,可以设置rowInfo= fasle 进行关闭
hiddenbooleanfalse隐藏,不可见,多用于权限控制
exportbooleantrue一般用于,不导出该列

事件

名称name示例描述
选择行onClickRow在这里插入图片描述在这里插入图片描述
单选多选onSelect在这里插入图片描述单选多选 回调
获取多选数据getSelections()table.getSelections()获取选择的数据
添加行addRow()table.addRow();添加一行数据
编辑行editRow(index)table.editRow(index);index 代表行
保存编辑editRow(index,false)table.editRow(index,false);false 代表不编辑,编辑完成
搜索/查询searchtable.search()
刷新当前页refreshtable.refresh();
重新加载reloadtable.reload()

示例

全部说明

 var readOnly = false;
    var table = $('#table').dataTable({
        url: "/user/list",
        param: {},//默认 {}
        no: true,//默认值 false
        radio: true,//默认值 false
        checkbox: true,//默认值 false 覆盖 radio
        rowInfo: true,//默认值 false 或者 function(index, rowData) return obj/html
        readOnly: readOnly,//默认值 false
        search: true,//默认true
        exportExcel: true,//默认false
        pageSize: 15,//默认15
        pageSizeMenu: true,//默认 [15, 20, 50, 100]  pageSizeMenu: [5, 15, 25, 35, 50],//自定义
        addRow: true,//默认true
        button: [{name: "add", text: "新增"}, {name: "edit", text: "编辑"}, {name: "del", text: "删除"}],
        showToolButton:true,//默认true 显示用户添加的按钮
        columns: [
            {field: 'userId', name: 'id',},
            {
                field: 'userName',
                name: '用户名',
                type: 'input',// input select
                rowInfo: true,//默认true
                search: true,
                sort: true//排序 默认值 false
            },
            {
                field: 'type',
                name: '用户类型',
                type: 'select',
                search: true,
                edit:false,
                option: [{'name': '前台用户', 'value': 1}, {'name': '后台用户', 'value': 2}],
            },
            {
                field: 'status',
                name: '状态',
                type: 'select',
                search: true,
                option: [{'name': '有效', 'value': 1}, {'name': '禁用', 'value': 0}],
                url: ""
            },
            {field: 'userInfo.createTime', name: '时间', type: 'dateTime', search: true, sort: true},
            {
                name: "操作",
                rowInfo: false,//详情中不显示
                hidden: readOnly,//默认值 false
                export: false,//导出 默认true
                formatter: function (value, rowData, rowIndex) {
                    var edit = $('<button class="btn btn-default btn-sm"></button>').text('编辑');
                    var save = $('<button class="btn btn-default btn-sm"></button>').text('保存').hide();
                    edit.click(function () {
                        table.editRow(rowIndex);
                        edit.hide();
                        save.show();
                    });
                    save.click(function () {
                        table.editRow(rowIndex, false);
                        edit.show();
                        save.hide();
                    });
                    return [edit, save];
                }
            }
        ],
    });
    // table.onClickRow(function (index, rowData) {
    //     console.log(rowData);
    //     table.editRow(index);
    // });
    table.onSelect(function (rowData, checked, index) {//单选多选 回调
        console.log(rowData);
        //table.getSelections();获取全部
    });

    $('#addRow').click(function () {
        table.addRow();
    })

2.png

3.png

4.png

5.png

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值