使用bootstarp前端组件集成的table 分页组件 ;简单上手使用实现前端分页功能


注意这是前端分页实现哦,
在后端会一次性把数据取过来的,慎用啊😁

上次用的那个后端分页PageHelper,虽然说也是比较方便的;
----> 前后端分离学习笔记(4) —[路由嵌套, 查询表单显示]

这次练习的话,也是打算整体试试BootStarp前端框架;上手简单,且比较使用于融入到HTML页面中;
分页的话就用在前端页面分页了,也就是说会一次性把数据查询过来;前端分页即可;
需要注意的是: 如果你的数据量特多大的情况下,就别用这种前端分页的方式了,比较影响使用的效率,比如你好几万条数据一下子加载过来,一般的服务器它可能就扛不住啊.

1. 下载bootstarp

当然,首先的下载css,js配置文件;为了方便 我这次都是用了下载的离线文件;
bootStarp3版本
这次我用的还是比较经典的3版本;
在这里插入图片描述

建议将dist文件下这几个都放入项目;
在这里插入图片描述
在这里插入图片描述


2. 下载使用 bootstrap-table

当然还需要下载,bootstrap-table组件的离线配置文件;
我在这下载的 --> bootstrap-table组件
在这里插入图片描述
解压后主要用dist下的文件;
在这里插入图片描述
放入到项目中即可; 我这次直接把解压文件全放进去了;(没啥影响,就是大部分文件用不到);
在这里插入图片描述


推荐看看BootstrapTable参数;

可以看看这个地址的—>BootstrapTable参数;
自动翻译的词语,有的可能不太好理解;
在这里插入图片描述

或者网上找资料看看;

这位大佬写的API参数也是很实用的,对于 BootstrapTable使用的过程中,可查看参数的使用;
博文地址:
BootstrapTable参数、属性、事件列表
在这里插入图片描述


3.部分代码

页面安排的话;具体引用这些;其他的是我这个小demo中对于页面的修饰文件;或者弹框优化组件;
和分页这几个没关系;
等等.jquery.min.js 是必须要用的;不然bootstrap.min.js用不了
在这里插入代码片

然后我这个页面,代码就放这里了;

<!DOCTYPE html>
<html lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title>管理员管理</title>
    <!--部署CSS-->
    <link rel="stylesheet" type="text/css" href="../../css/back/style.css">
    <link rel="stylesheet" type="text/css" href="../../css/css/bootstrap.min.css">
    <link rel="stylesheet" type="text/css" href="../../css/sweetalert.min.css">
    <link rel="stylesheet" type="text/css" href="../../js/bootstrap-table-master/dist/bootstrap-table.min.css">

    <!--部署JS-->
    <script src="../../js/jquery.min.js" type="text/javascript"></script>
    <script src="../../css/js/bootstrap.min.js" type="text/javascript"></script>
    <script src="../../js/common/alertCommonUtil.js" type="text/javascript"></script>
    <script src="../../js/common/sweetalert.min.js" type="text/javascript"></script>
    <script src="../../js/bootstrap-table-master/dist/bootstrap-table.min.js" type="text/javascript"></script>
    <script src="../../js/bootstrap-table-master/dist/locale/bootstrap-table-zh-CN.min.js" type="text/javascript"></script>
    <script type="text/javascript">
        //加载页面后就显示信息;
        $(function () {
            var account = sessionStorage.getItem("account");
            //简易验证是否登录;
            if (account == null) {
                swal({title: "您还没有登录"});
                window.parent.location.replace("login.html");
                return;
            }

            //前端分页;
            $('#mytab').bootstrapTable({
                method: 'post',
                url: "../../backAdmin/getAllAdmin",//请求路径
                contentType: "application/x-www-form-urlencoded",
                striped: true, //是否显示行间隔色
                pageNumber: 1, //初始化加载第一页
                pagination: true,//是否分页
                sidePagination: 'client',//client:前端分页
                pageSize: 5,//单页记录数
                pageList: [5, 10, 20, 30],//可选择单页记录数
                //showRefresh: true,//刷新按钮
                queryParams: function () {
                    //向服务器传递的参数,这里仅需查询条件;
                    return {
                        account: $('#search_name').val(),
                        sex: $('#search_tel').val()
                    };
                },
                //数组类型;
                dataType:'json',
                //响应的数据信息;
                responseHandler(res){
                    //这部分的code ;msg,data是在后端响应时封装的属性信息;
                    console.log(res);
                    if(res === "521"){
                        //拦截到异常登录;
                        swal({title: "异常登录警告", type: "warning"});
                        window.sessionStorage.removeItem("account");
                        window.sessionStorage.removeItem("aId");
                        window.sessionStorage.removeItem("adminType");
                        window.sessionStorage.removeItem("newFileName");
                        window.parent.location.replace("login.html");
                    }else if(res.code === 203 ||res.code === 500){
                        swal({title: res.msg, type: "warning"});
                        return { "rows": [] };
                    }else if(res.code === 200){
                        //为参数赋值;
                        return { "rows": res.data }
                    }
                },
                //表单;
                columns: [
                    {
                        title: '序号',
                        field: '',
                        formatter: function (value, row, index) {
                            return index + 1;
                        }
                    },
                    {
                        title: '账户',
                        field: 'account',
                        sortable: true
                    }, {
                        title: '头像',
                        field: 'newFileName',
                        formatter: operAdv,//格式化头像;
                    }, {
                        title: '性别',
                        field: 'sex',
                    }, {
                        title: '年龄',
                        field: 'age',
                    }, {
                        title: '手机',
                        field: 'phone',
                    },
                    {
                        title: '操作时间',
                        field: 'operTime',
                        formatter: operTimes,//格式化时间;
                    },
                    {
                        title: '隶属角色',
                        field: 'roleList',
                        formatter: operRole,//格式化角色;
                    },
                     {
                        title: '操作',
                        field: 'id',
                        formatter: operation,//拼接按钮;
                    }]
            })

            //头像格式化;
            function operAdv(value,row) {
                var userImgLink = "";
                if(row.newFileName != null){
                    userImgLink = "http://localhost:8848/pictures/adminAdv/" + row.account + "/" + row.newFileName;
                }else{
                    userImgLink = "http://localhost:8848/pictures/default/admin/defaultadmin.png";
                }
                return "<img src='" + userImgLink + "' style='width: 40px;height: 40px;border-radius: 20px;/>'";
            }

            //格式化时间;
            function operTimes(value,row){
               return new Date(row.operTime).toLocaleString();
            }

            //角色格式化;
            function operRole(value,row){
                var arr = row.roleList;
                //拼接;
                var str="";
                for (var i = 0; i < arr.length; i++) {
                    str += arr[i].roleName + " ";
                }
                return str;
            }

            //操作按钮;
            value代表该列的值,row代表当前对象
            function operation(value,row,index) {
                var htm = "<button type=\"button\" class=\"btn btn-warning\" style='width: 50px;' οnclick='toUpdateAdmin("+row.id+")'>编辑</button>" ;
                htm+="&nbsp;&nbsp;"
                htm+="<button   type=\"button\" class=\"btn btn-danger\"  style='width: 50px;' οnclick='toDelete("+row.id+")'>删除</button>"
                return htm;
            }

            //查询按钮事件;这里会刷新;
            $('#search_btn').click(function () {
                $('#mytab').bootstrapTable('refresh', {
                    url: '../../backAdmin/getAllAdmin'
                });
            })
        });




        function toAdd() {
            //跳转到新增页面;
            location.assign("addadmin.html");
        }

        //修改;
        function toUpdateAdmin(aId) {
            //修改时携带参数;
            location.assign("updateadmin.html?aId=" + aId);
        }

        //删除管理员;
        function toDelete(id) {

        }
    </script>

</head>


<body>
<div>
    <div>
        <button type="button" class="btn btn-success" onclick="toAdd()">新增管理员</button>
    </div>
    <!--数据列表 -->
    <div class="panel panel-default">
        <div class="panel-heading">

        </div>
        <div class="panel-body form-group" style="margin-bottom:0px;">
            <label class="col-sm-1 control-label" style="text-align: right; margin-top:5px">账户名:</label>
            <div class="col-sm-2">
                <input type="text" class="form-control" name="account" id="search_name"/>
            </div>
            <label class="col-sm-1 control-label" style="text-align: right; margin-top:5px">性别:</label>
            <div class="col-sm-2">
                <input type="text" class="form-control" name="sex" id="search_tel"/>
            </div>
            <div class="col-sm-1 col-sm-offset-4">
                <button class="btn btn-primary" id="search_btn">查询</button>
            </div>
        </div>
    </div>
    <table id="mytab" class="table table-hover"></table>
</div>
</body>
</html>

具体说说;

这里的话,就一个简单的客户端session验证,
在这里插入图片描述

分页的JS部分;
在这里插入图片描述
在这里插入图片描述
格式化的部分
在这里插入图片描述

后端的话,没啥说的;这里一次性就把数据全部查询了;
在这里插入图片描述

mapper文件的sql
在这里插入图片描述


4.具体效果

具体使用效果;毕竟不是学习前端开发的;样式肯能不是很好看

加载数据时的情景;

在这里插入图片描述

查询到信息时

在这里插入图片描述

查询不到数据时;

在这里插入图片描述

当数据量不足时,不会显示分页

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小智RE0

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值