【BootStrap系列】使用BootStrap-Table渲染后端返回数据(有例子)

BootStrap-Table的使用

引入需要的文件

	<link rel="stylesheet" href="../css/font-awesome.min.css">
    <link rel="stylesheet" href="../css/bootstrap.css">
    <link rel="stylesheet" href="../css/bootstrap-table.min.css">
    <script src="../js/popper.min.js"></script>
    <script src="../js/jquery-1.11.0.min.js"></script>
    <script src="../js/bootstrap-table.min.js"></script>
    <script src="../js/bootstrap.min.js"></script>

上述文件可以在网络上自行下载,JQuery版本不一定要与我相同。

BootStrap-Table的引入

在项目中 我们需要将后端文件以表格形式呈现,所以要引入BootStrap-Table组件,并利用其功能,包括表格细节展示,按搜索框搜索等等。

HTML代码

<div class="row">
   <div class="col-12">
     <table id="table" data-toggle="table" data-detail-view="true" data-detail-formatter="detailFormatter">
            
      </table>
    </div>
</div>
	// 页面加载直接发送请求,初始化表格
	$(function(){
        initTable();
    });
    function initTable(){
        $('#table').bootstrapTable('destroy');
        $('#table').bootstrapTable({
            method : 'post', // 请求方式
            contentType:'application/x-www-form-urlencoded; charset=UTF-8', 
            url : 'http://localhost:8080/other/queryFileList', //请求地址 
            dataType: 'json',
            dataField: 'rows', //返回数据参数
            pagination : true, //是否开启分页
            pageNumber : 1, // 分页当前
            pageSize: 2,   //每页的记录行数(*)
            pageList: [2, 4, 6], //可选分页
            paginationPreText: '上一页',
            paginationNextText: '下一页',
            sidePagination: "server", //服务端分页
            queryParamsType: 'limit', //选取严格的参数类型
            queryParams: function (params) {
            	// 这个函数主要是对请求参数的处理,发送js对象
                var obj = {};
                obj['offset'] = params.offset;
                obj['limit'] = params.limit;

                if($('#searchText').val() !== ""){
                    let options = $("#sel1 option:selected");    //获取选中项
                    let day = options.val();              //获取选中项的值
                    let value = $('#searchText').val();
                    obj[day] = value;
                }
                console.log(obj);
                var temp = JSON.stringify(obj);
                return JSON.parse(temp);
            },
            responseHandler: function (res) {
                // 对返回参数进行处理
                console.log(res);
                return {
                    "total": res.data.total,
                    "rows": res.data.rows
                };
            },
            // 对数据列进行一个封装
            columns : [{
                field: 'SerialNumber',
                title: '序号',
                formatter: function (value, row, index) {
                    return index+1;
                }
            }, {
                field: 'fileName',
                title: '文件名称',
                cellStyle:{
                    css:{
                        "overflow": "hidden",
                        "text-overflow": "ellipsis",
                        "white-space": "nowrap"
                    }
                }
            }, {
                field: 'userName',
                title: '上传人'
            }, {
                field: 'createTime',
                title: '上传时间'
            }, {
                field: 'operate',
                title: '操作',
                align: 'center',
                valign: 'middle',
                width: 200,
                events: {
                    'click #delete': function (e, value, row, index) {
                        deleteInfo(row.id);
                    },
                    'click #download': function (e, value, row, index) {
                        downloadInfo(row.id);
                    }
                },
                formatter: function (value, row, index) {
                    var result = "";
                    result +=
                        '<button id="download" class="btn btn-success btn-sm" style="margin-left:10px;">下载</button>' +
                        '<button id="delete" class="btn btn-danger btn-sm" style="margin-left:10px;">删除</button>';
                    return result;
                }
            }],
            onLoadSuccess: function () {

            },
            onLoadError: function () {
                alert("数据加载失败!");
            }
        });
    }
    // 细节视图展示
    function detailFormatter(index, row) {
        var html = []
        $.each(row, function (key, value) {
            if (key != 'limit' && key != 'page' && key != 'offset') {
                if(key == 'fileName') {
                    html.push('<p><b>' + '文件名称' + ':</b> ' + value + '</p>')
                } else if(key == 'fileDescription') {
                    html.push('<p><b>' + '文件描述' + ':</b> ' + value + '</p>')
                } else if(key == 'userName') {
                    html.push('<p><b>' + '上传人' + ':</b> ' + value + '</p>')
                } else if(key == 'createTime') {
                    html.push('<p><b>' + '上传时间' + ':</b> ' + value + '</p>')
                }
            }
        });
        return html.join('')
    }
    function deleteInfo(id) {
        if(confirm("确定删除吗")){
            $.ajax({
                type: 'post',
                url: 'http://localhost:8080/other/delete',
                dataType: 'json',
                data: {
                    id: id
                },
                success: function (data) {
                    if (data.code == '200') {
                        $('#table').bootstrapTable('refresh');
                        alert('删除成功');
                    }
                    else {
                        alert(data.message);
                    }
                }
            })
        }
    }
    function downloadInfo(id) {
        let $eleForm = $("<form method='post'></form>");
        let url = "http://localhost:8080/other/download?id="+id;
        $eleForm.attr("action", url);

        $(document.body).append($eleForm);

        $eleForm.submit();
    }

后端代码

Controller

	@PostMapping(value = "/queryFileList")
    public CommonReturnType queryFileList(OtherFileForm otherFileForm) {
        PageHelper<OtherFileForm> pageHelper = new PageHelper<>();
        Integer total = otherFileService.getTotal(otherFileForm);

        pageHelper.setTotal(total);

        List<OtherFileForm> list = otherFileService.selectFileListPage(otherFileForm);

        pageHelper.setRows(list);

        return CommonReturnType.success(pageHelper);
    }

Form

@Data
@NoArgsConstructor
@AllArgsConstructor
public class OtherFileForm extends Page {

    private Integer id;

    private String fileName;

    private String fileDescription;

    private String userName;

    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    private Date createTime;
}
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Page {

    // 每页显示数量
    private int limit;

    // 页码
    private int page;

    // sql语句起始索引
    private int offset;
}

结果展示

在这里插入图片描述

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Bootstrap Table 是一个基于 Bootstrap 的强大的、响应式的表格插件,它具有丰富的功能和灵活的配置选项。在使用 Bootstrap Table 时,有时需要重载表格来更新数据或者重新渲染表格。下面是关于如何重载 Bootstrap Table使用教程: 1. 获取 Bootstrap Table 对象 在重载 Bootstrap Table 之前,需要先获取 Bootstrap Table 对象。可以通过以下方式获取: ```javascript var table = $('#table').bootstrapTable('getOptions'); ``` 其中,'#table' 是你的表格的 ID,可以根据你的实际情况进行修改。 2. 重载 Bootstrap Table 重载 Bootstrap Table 的方法有多种,以下是其中的两种常用方法: (1)使用 load 方法 load 方法可以重新加载表格数据并重新渲染表格,可以通过以下方式调用: ```javascript $('#table').bootstrapTable('load', data); ``` 其中,data 是你要重新加载的数据,可以是一个数组或者是一个 URL。 (2)使用 refresh 方法 refresh 方法可以重新渲染表格,但不会重新加载数据。可以通过以下方式调用: ```javascript $('#table').bootstrapTable('refresh', {silent: true}); ``` 其中,{silent: true} 参数表示不显示刷新动画效果。 3. 完整示例 下面是一个完整的示例,演示如何重载 Bootstrap Table: ```javascript // 获取 Bootstrap Table 对象 var table = $('#table').bootstrapTable('getOptions'); // 重新加载数据 $.ajax({ url: '/data', type: 'get', dataType: 'json', success: function(data) { // 重新加载数据 $('#table').bootstrapTable('load', data); } }); // 重新渲染表格 $('#table').bootstrapTable('refresh', {silent: true}); ``` 在这个示例中,首先通过 getOptions 方法获取 Bootstrap Table 对象,然后使用 jQuery 的 ajax 方法重新加载数据,最后使用 refresh 方法重新渲染表格。 希望这个使用教程对你有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值