Bootstrap Table使用教程(请求json数据渲染表格)

今天来写一个关于Bootstrap Table使用教程(请求json数据渲染表格)
json数据来源于后端小伙伴的接口,我放在本地进行模拟了

涉及到的知识点
1:Bootstrap Table使用教程,基本请求,将请求过来的数据进行分页,每页5条内容,也可以选择每页15条,20条或者更多

2: 定义删除按钮功能、获得要删除的数据,声明一个数组,通过获得别选中的来进行遍历,cid为获得到的整条数据中的一列,前端删除就没写了,直接后端删除,删除掉数据库内容,在执行刷新表格即可删除。

3:编辑按钮,编辑按钮的时候会弹出form表单,节省篇幅,留一个编辑按钮的点击事件,可自行测试。

4:表格的内容过长的时候,整个表格会变得不那么美观,有些内容会占据两行,但是表格稀稀疏疏,优化的时候做到将超过的内容隐藏起来,以达到自适应的要求。

5:将后端传过来的性别等进行判断,后端0,1渲染的时候判断男女

6:格式化时间,将后端传过来的时间转化,比如后端传的时间戳:"visitTime": 1572502840091,通过代码转化成时分秒的格式2019-10-31 14:20

这里推荐一个时间戳转换工具:https://tool.lu/timestamp 有兴趣的小伙伴可以去看一下。

image.png

话不多说,上代码,里面的引入文件可以直接去官网下载,这里为了使用方便,用的是cdn引入,建议将下载到本地哦。
示例:

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8" />
        <title>Dashboard | Nadhif - Responsive Admin Template</title>
        <link rel="stylesheet" href="http://cdn.bootcss.com/bootstrap/3.3.0/css/bootstrap.min.css">
        <link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap-table/1.15.4/bootstrap-table.min.css">
        <script src="https://cdn.staticfile.org/jquery/2.1.1/jquery.min.js"></script>
        <script src="http://cdn.bootcss.com/bootstrap/3.3.0/js/bootstrap.min.js"></script>
        <script src="https://cdn.bootcss.com/bootstrap-table/1.15.4/bootstrap-table.min.js"></script>
        <script src="https://cdn.bootcss.com/bootstrap-table/1.15.4/locale/bootstrap-table-zh-CN.min.js"></script>
    </head>
    <body>
        <a href="javascript:;"  id="remove"><span class="hidden-480">删除</span></a>
        <table id="mytab" class="table table-hover"></table>
        <script>
            $('#mytab').bootstrapTable({
                method: 'get',
                url: "test.json", // 请求路径
                striped: true, // 是否显示行间隔色
                pageNumber: 1, // 初始化加载第一页
                pagination: true, // 是否分页
                sidePagination: 'client', // server:服务器端分页|client:前端分页
                pageSize: 5, // 单页记录数
                pageList: [5, 20, 30],
                // showRefresh : true,// 刷新按钮
                queryParams: function(params) { // 上传服务器的参数
                    var temp = {
                        name: $("#sname").val(),
                        viewReason: $("#viewReason").val(),
                    };
                    return temp;
                },
                columns: [{
                    checkbox: true
                }, {
                    title: 'id',
                    field: 'id',
                    visible: false
                }, {
                    title: '设备编号',
                    field: 'deviceId',

                }, {
                    title: '姓名',
                    field: 'name',

                }, {
                    title: '性别',
                    field: 'sex',
                    formatter: formatSex
                }, {
                    title: '证件号码',
                    cellStyle: formatTableUnit,
                    formatter: paramsMatter,
                    field: 'card'
                }, {
                    title: '联系电话',
                    field: 'phone'
                }, {
                    title: '被访姓名',
                    field: 'viewPeople'
                }, {
                    title: '来访事由',
                    field: 'viewReason',
                    formatter: formatReason
                }, {
                    title: '来访时间',
                    field: 'visitTime',
                    
                    formatter: formatTime
                }, {
                    title: '是否离开',
                    field: 'isLeave',
                    formatter: formatIsLeave
                }, {
                    title: '操作',
                    field: 'id',
                    formatter: option
                }]
            })

            // 定义删除、更新按钮
            function option(value, row, index) {
                var htm = "";
                htm += '<button id="dupdevice" deviceId="' + value +
                    '" onclick="updDevice(' + value + ')">编辑</button>'
                return htm;
            }

            //表格超出宽度鼠标悬停显示td内容
            function paramsMatter(value, row, index) {
                var span = document.createElement("span");
                span.setAttribute("title", value);
                span.innerHTML = value;
                return span.outerHTML;
            }
            //td宽度以及内容超过宽度隐藏
            function formatTableUnit(value, row, index) {
                return {
                    css: {
                        "white-space": "nowrap",
                        "text-overflow": "ellipsis",
                        "overflow": "hidden",
                        "max-width": "60px"
                    }
                }
            }

            // 格式化性别"sex": 0,是女  "sex": 1,是男
            function formatSex(value, row, index) {
                return value == 1 ? "男" : "女";
            }
            // 格式化在离厂//"isLeave": 0,是离场,"isLeave": 1,是在场
            function formatIsLeave(value, row, index) {
                return value == 1 ? "离厂" : "在厂";
            }

            // 格式化时间
            function formatTime(value, row, index) {
                var date = new Date();
                date.setTime(value);
                var month = date.getMonth() + 1;
                var hours = date.getHours();
                if(hours < 10)
                    hours = "0" + hours;
                var minutes = date.getMinutes();
                if(minutes < 10)
                    minutes = "0" + minutes;
                var time = date.getFullYear() + "-" + month + "-" + date.getDate() +
                    " " + hours + ":" + minutes;
                return time;
            }

            // 格式化访问理由 "viewReason": 1是面试,2是开会,3是拜访客户,4是项目实施
            function formatReason(value, row, index) {
                var str;
                switch(value) {
                    case 1:
                        str = "面试";
                        break;
                    case 2:
                        str = "开会";
                        break;
                    case 3:
                        str = "拜访客户";
                        break;
                    case 4:
                        str = "项目实施";
                        break;
                    default:
                        str = "其他";
                }
                return str;
            }

            // 删除按钮事件
            $("#remove").on("click", function() {

                if(!confirm("是否确认删除?"))
                    return;
                var rows = $("#mytab").bootstrapTable('getSelections'); // 获得要删除的数据
                if(rows.length == 0) { // rows 主要是为了判断是否选中,下面的else内容才是主要
                    alert("请先选择要删除的记录!");
                    return;
                } else {
                    var ids = new Array(); // 声明一个数组
                    $(rows).each(function() { // 通过获得别选中的来进行遍历
                        ids.push(this.id); // cid为获得到的整条数据中的一列
                    });

                    //后端删除的方法
                    deleteMs(ids)
                }

            })

            // 删除访客,删除数据库内容,刷新表格即可删除
            function deleteMs(ids) {
                $.ajax({
                    url: basePath + "/caller/dels?ids=" + ids,
                    dataType: "json",
                    type: "get",
                    success: function(data) {
                        if(data > 0) {
                            msg(6, "操作成功")
                            $('#mytab').bootstrapTable('refresh', {
                                url: basePath + '/caller/list'
                            });
                        }
                    }
                });
            }
            // 编辑访客
            function updDevice(id) {
                alert("编辑")
            }
        </script>
    </body>

</html>

test.json

[
    {
        "id": 139,
        "deviceId": "3",
        "name": "424",
        "sex": 0,
        "viewReason": 1,
        "viewPeople": "4",
        "card": "12345677",
        "isLeave": 1,
        "phone": "1567865475",
        "organId": 1,
        "organName": "字节跳动",
        "companyId": 1,
        "visitTime": 1572502840091,
        "fenceId": "20191031142032",
        "headUrl": "http://localhost:8081/pion/images/cmao.jpg",
        "organIds": null
    }, {
        "id": 140,
        "deviceId": "EAFA6CCF3CDD",
        "name": "访客围栏测试1",
        "sex": 0,
        "viewReason": 2,
        "viewPeople": "测试",
        "card": "",
        "isLeave": 0,
        "phone": "",
        "organId": 1,
        "organName": "字节跳动",
        "companyId": 1,
        "visitTime": 1572512489920,
        "fenceId": "2019103117129",
        "headUrl": "http://localhost:8081/pion/images/cmao.jpg",
        "organIds": null
    },{
        "id": 140,
        "deviceId": "EAFA6CCF3CDD",
        "name": "访客围栏测试2",
        "sex": 1,
        "viewReason": 1,
        "viewPeople": "测试",
        "card": "",
        "isLeave": 0,
        "phone": "",
        "organId": 1,
        "organName": "字节跳动",
        "companyId": 1,
        "visitTime": 1572512489920,
        "fenceId": "2019103117129",
        "headUrl": "http://localhost:8081/pion/images/cmao.jpg",
        "organIds": null
    },{
        "id": 140,
        "deviceId": "EAFA6CCF3CDD",
        "name": "访客围栏测试3",
        "sex": 1,
        "viewReason": 1,
        "viewPeople": "测试",
        "card": "",
        "isLeave": 0,
        "phone": "",
        "organId": 1,
        "organName": "字节跳动",
        "companyId": 1,
        "visitTime": 1572512489920,
        "fenceId": "2019103117129",
        "headUrl": "http://localhost:8081/pion/images/cmao.jpg",
        "organIds": null
    },{
        "id": 140,
        "deviceId": "EAFA6CCF3CDD",
        "name": "访客围栏测试4",
        "sex": 1,
        "viewReason": 1,
        "viewPeople": "测试",
        "card": "",
        "isLeave": 0,
        "phone": "",
        "organId": 1,
        "organName": "字节跳动",
        "companyId": 1,
        "visitTime": 1572512489920,
        "fenceId": "2019103117129",
        "headUrl": "http://localhost:8081/pion/images/cmao.jpg",
        "organIds": null
    }, {
        "id": 142,
        "deviceId": "公寓i467ty8",
        "name": "跳跳21鱼",
        "sex": 1,
        "viewReason": 1,
        "viewPeople": "11",
        "card": "3408231234567851524",
        "isLeave": 0,
        "phone": "13661725475",
        "organId": 1,
        "organName": "212联",
        "companyId": 1,
        "visitTime": 1572513935374,
        "fenceId": "20191031172532",
        "headUrl": "http://localhost:8081/pion/images/cmao.jpg",
        "organIds": null
    }
]

原文作者:祈澈姑娘 技术博客:https://www.jianshu.com/u/05f416aefbe1
90后前端妹子,爱编程,爱运营,文艺与代码齐飞,魅力与智慧共存的程序媛一枚,欢迎关注【编程微刊】公众号,回复【领取资源】,500G编程学习资源干货免费送。

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