欢迎访问宙启技术站
智能推送

BootStrapTable的动态表格详细教程【附代码】

发布时间:2023-05-15 13:36:42

BootstrapTable是一个基于Bootstrap的jQuery表格插件,在前端界面设计中广泛使用。它充分利用了Bootstrap框架的响应式特性,可以轻松实现动态表格功能。

在本文中,我们将介绍如何使用BootstrapTable插件实现一个完整的动态表格,并附上代码示例,供读者参考。

1、关于BootstrapTable

BootstrapTable是一款能够实现数据表格内的排序、筛选、分页、格式化等等功能的jQuery插件,支持动态数据的展示和加载以及事件的异步刷新。

它基于Bootstrap框架开发,具有良好的兼容性,可适应多种不同的设备和浏览器环境。

2、BootstrapTable的特点

(1)支持本地和远程数据的加载。

(2)支持分页、排序、检索等数据表格基本操作。

(3)支持表格行和单元格样式的自定义。

(4)支持服务器端分页和搜索。

(5)高度可定制的UI控件。

3、BootstrapTable的基本用法

(1)引入BootstrapTable的必要文件:

<!-- 引入 Bootstrap 核心 CSS 文件 -->
<link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css">
<!-- 引入 Bootstrap Table 核心 CSS 文件 -->
<link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap-table/1.11.1/bootstrap-table.min.css">
<!-- 引入 jQuery 文件 -->
<script src="https://cdn.bootcss.com/jquery/2.1.1/jquery.min.js"></script>
<!-- 引入 Bootstrap 核心 JavaScript 文件 -->
<script src="https://cdn.bootcss.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<!-- 引入 Bootstrap Table 核心 JavaScript 文件 -->
<script src="https://cdn.bootcss.com/bootstrap-table/1.11.1/bootstrap-table.min.js"></script>

(2)设置数据源并初始化表格:

<table id="table"></table>

<script>
    $(function () {
        $('#table').bootstrapTable({
            // 设置数据源
            data: dataset,
            // 列定义
            columns: [
                {field: 'id', title: 'ID'},
                {field: 'name', title: '姓名'},
                {field: 'age', title: '年龄'}
            ]
        });
    });
</script>

注意:在实际开发中,需要将“dataset”变量替换为真实数据源。

(3)实现表格的动态化

在有些情况下,需要实现表格的动态化,比如数据源的更新、行的添加、修改或删除等操作。针对这些需求,BootstrapTable提供了一系列的API,可以针对不同的操作实现相应的动作。

4、具体实现

(1)HTML代码

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>BootstrapTable动态表格</title>
    <!-- 引入必要的文件 -->
    <link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css">
    <link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap-table/1.11.1/bootstrap-table.min.css">
    <script src="https://cdn.bootcss.com/jquery/2.1.1/jquery.min.js"></script>
    <script src="https://cdn.bootcss.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
    <script src="https://cdn.bootcss.com/bootstrap-table/1.11.1/bootstrap-table.min.js"></script>
</head>
<body>
<div class="container-fluid">
    <table id="table"></table>
</div>
</body>
</html>

(2)JavaScript代码

// 定义一个全局变量用于存储原始数据
var data = [
    {id: 1, name: '张三', age: 20},
    {id: 2, name: '李四', age: 30},
    {id: 3, name: '王五', age: 40},
    {id: 4, name: '赵六', age: 50}
];

$(function () {
    // 初始化表格
    initTable();

    // 监听“添加”按钮的点击事件,触发添加操作
    $('#btn-add').click(function () {
        var name = $('#add-name').val();
        var age = $('#add-age').val();
        addRow({id: ++data.length, name: name, age: age});
    });

    // 初始化表格
    function initTable() {
        $('#table').bootstrapTable({
            // 设置数据源
            data: data,
            // 列定义
            columns: [
                {field: 'id', title: 'ID'},
                {field: 'name', title: '姓名'},
                {field: 'age', title: '年龄'},
                {field: 'action', title: '操作', formatter: actionFormatter}
            ]
        });
    }

    // 添加行
    function addRow(row) {
        data.push(row);
        $('#table').bootstrapTable('append', row);
    }

    // 编辑行
    function editRow(index, row) {
        data[index] = row;
        $('#table').bootstrapTable('updateRow', {
            index: index,
            row: row
        });
    }

    // 删除行
    function deleteRow(index) {
        data.splice(index, 1);
        $('#table').bootstrapTable('removeByIndex', index);
    }

    // 定义“操作”列的格式化方法,添加“编辑”和“删除”按钮
    function actionFormatter(value, row, index) {
        return [
            '<button type="button" class="btn btn-primary btn-sm" data-toggle="modal" data-target="#editModal">编辑</button>',
            '<button type="button" class="btn btn-danger btn-sm" onclick="deleteRow(' + index + ')">删除</button>'
        ].join('');
    }

    // 监听“编辑”弹窗的提交按钮事件,触发修改操作
    $('#btn-edit').click(function () {
        var index = $('#edit-index').val();
        var name = $('#edit-name').val();
        var age = $('#edit-age').val();
        editRow(index, {id: index + 1, name: name, age: age});
    });
});

(3)CSS代码

因为没有涉及到CSS方面的样式,所以这里省略CSS代码。

(4)代码解析

上述JavaScript代码实现了一个完整的动态表格,其中包括以下功能:

(1)通过定义全局变量“data”,存储了表格的初始数据。

(2)使用jQuery在页面加载完成后调用了initTable()方法,来初始化表格。

(3)在initTable()方法中,使用了BootstrapTable插件的API,定义数据源和表格列数据。其中,为“操作”列的数据定义了一个格式化方法actionFormatter(),返回了包含“编辑”和“删除”按钮的HTML代码。

(4)通过监听“添加”按钮的点击事件,在弹出的模态框中获取用户输入数据,将其封装为一个对象,调用addRow()方法来添加一行数据。在实现方法中,将数据添加到全局变量“data”数组中,并使用Table插件的API,实现了新数据的插入。

(5)通过编辑和删除按钮所在的方法操作行数据。其中,修改操作触发了编辑模态框的弹出,并加载该行数据的原始信息。通过监听弹出框的提交事件,获取新的数据信息,调用editRow()方法来更新原始数据,并实现动态刷新。删除操作通过在“删除”按钮所在的HTML代码中绑定一个JavaScript函数,来监听该按钮的点击事件。通过该函数来实现删除,调用deleteRow()方法来更新数据并动态刷新表格。

5、小结

本文通过一系列的操作,介绍了如何使用BootstrapTable插件来实现一个动态表格,并提供了相应的代码实现。希望本文能对读者在Web前端开发中遇到动态表格时有所帮助。