bootstrap table(建议收藏)

更新时间:

💡一则或许对你有用的小广告

欢迎加入小哈的星球 ,你将获得:专属的项目实战 / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论

  • 新项目:《从零手撸:仿小红书(微服务架构)》 正在持续爆肝中,基于 Spring Cloud Alibaba + Spring Boot 3.x + JDK 17...点击查看项目介绍 ;
  • 《从零手撸:前后端分离博客项目(全栈开发)》 2 期已完结,演示链接: http://116.62.199.48/ ;

截止目前, 星球 内专栏累计输出 82w+ 字,讲解图 3441+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,权限管理,Spring Cloud Alibaba 微服务等等,已有 2900+ 小伙伴加入学习 ,欢迎点击围观

在 Web 开发中,表格(Table)是展示结构化数据的常用工具,而 Bootstrap Table 作为基于 Bootstrap 框架的增强插件,凭借其简洁的 API 和丰富的功能,成为开发者构建交互式表格的首选方案。无论是展示用户信息、订单列表,还是实时数据统计,它都能通过直观的配置快速实现复杂需求。本文将从基础到进阶,系统讲解如何利用 Bootstrap Table 构建高效、美观的表格,并通过实际案例帮助读者理解核心逻辑。


一、Bootstrap Table 的基础构建

1.1 环境准备与核心依赖

使用 Bootstrap Table 需要先引入以下资源:

  • Bootstrap CSS:提供基础样式和响应式布局支持。
  • jQuery:Bootstrap Table 依赖于 jQuery 的 DOM 操作能力。
  • Bootstrap Table 的 CSS/JS 文件:包含核心功能和样式。
<!-- 在 HTML 的 <head> 中引入 CSS -->
<link href="https://unpkg.com/bootstrap-table@1.18.3/dist/bootstrap-table.min.css" rel="stylesheet">
  
<!-- 在 </body> 前引入 JS -->
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script src="https://unpkg.com/bootstrap-table@1.18.3/dist/bootstrap-table.min.js"></script>

1.2 创建第一个表格

通过 HTML 标签和数据属性配置即可快速生成表格。以下是一个最简示例:

<table id="demoTable" data-toggle="table">
  <thead>
    <tr>
      <th data-field="id">ID</th>
      <th data-field="name">姓名</th>
      <th data-field="age">年龄</th>
    </tr>
  </thead>
  <tbody>
    <tr><td>1</td><td>张三</td><td>28</td></tr>
    <tr><td>2</td><td>李四</td><td>32</td></tr>
  </tbody>
</table>

关键点解释

  • data-toggle="table" 是 Bootstrap Table 的启动标记。
  • <th> 标签的 data-field 属性对应表格列的字段名,用于绑定数据源。
  • 表格内容直接写在 <tbody> 中,但实际开发中通常通过 data-url 动态加载数据。

二、核心功能与进阶配置

2.1 数据动态加载

静态表格在复杂场景中效率低下,通过 data-url 和服务端交互可实现动态渲染。例如:

<table id="dynamicTable" data-toggle="table" data-url="/api/data.json">
  <thead>
    <tr>
      <th data-field="id">ID</th>
      <th data-field="title">标题</th>
      <th data-field="date">日期</th>
    </tr>
  </thead>
</table>

服务端响应格式示例

{
  "rows": [
    {"id": 1, "title": "文章1", "date": "2023-01-01"},
    {"id": 2, "title": "文章2", "date": "2023-01-02"}
  ]
}

2.2 增强交互:分页、排序与搜索

通过以下配置项可快速添加常用功能:

<table 
  data-pagination="true"    <!-- 启用分页 -->
  data-side-pagination="server" <!-- 服务端分页 -->
  data-sort-name="date"     <!-- 默认排序字段 -->
  data-sort-order="desc"    <!-- 排序方向 -->
  data-search="true"        <!-- 启用搜索框 -->
>
</table>

比喻理解

  • 分页如同书籍的章节划分,避免一次性加载过多数据;
  • 排序类似 Excel 的升序/降序按钮,按字段重新排列内容;
  • 搜索如同图书馆的检索系统,快速定位目标条目。

三、高级技巧与最佳实践

3.1 自定义列与行操作

通过 formatter 函数可为列添加动态内容,例如显示图标或按钮:

<!-- 在 <th> 中添加 formatter 属性 -->
<th data-field="status" data-formatter="statusFormatter">状态</th>
function statusFormatter(value, row, index) {
  if (value === 'active') {
    return '<span class="badge bg-success">启用</span>';
  } else {
    return '<span class="badge bg-danger">禁用</span>';
  }
}

3.2 事件监听与响应

通过绑定事件可实现交互逻辑,例如点击行触发详情页跳转:

$('#dynamicTable').on('click-row.bs.table', function(e, row, $element) {
  window.location.href = `/detail/${row.id}`;
});

3.3 性能优化:虚拟滚动与延迟加载

对于超大数据集,启用虚拟滚动(data-height="500")可提升渲染速度。此外,结合 data-pagination 的服务端分页,避免一次性加载全部数据。


四、常见问题与解决方案

4.1 列宽自适应与固定列

  • 自动调整列宽:添加 data-show-columns="true" 后,用户可手动拖动列宽。
  • 固定首列:在 <th> 中设置 data-fixed="left",例如:
<th data-field="id" data-fixed="left">ID</th>

4.2 中文支持与国际化

通过 data-toolbar 引入语言包,例如:

$.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['zh-CN']);

4.3 兼容性问题

  • 确保 jQuery 版本 ≥ 1.12.3;
  • 使用 data-unique-id="id" 避免重复数据冲突。

五、实战案例:构建订单管理系统

5.1 需求分析

假设需展示包含订单号、金额、状态、操作的表格,并支持以下功能:

  • 按订单状态(待支付、已发货、已完成)筛选;
  • 点击“详情”按钮跳转到订单详情页;
  • 通过搜索框快速定位订单号。

5.2 完整代码实现

<!-- HTML 结构 -->
<table id="orderTable" data-toggle="table" data-url="/api/orders">
  <thead>
    <tr>
      <th data-field="orderId">订单号</th>
      <th data-field="amount">金额</th>
      <th data-field="status" data-formatter="statusFormatter">状态</th>
      <th data-formatter="actionFormatter">操作</th>
    </tr>
  </thead>
</table>
// JavaScript 逻辑
function statusFormatter(value) {
  const colors = { '待支付': 'warning', '已发货': 'primary', '已完成': 'success' };
  return `<span class="badge bg-${colors[value]}">${value}</span>`;
}

function actionFormatter(value, row) {
  return `<button class="btn btn-sm btn-info" onclick="viewDetail(${row.id})">详情</button>`;
}

function viewDetail(orderId) {
  window.location.href = `/order/${orderId}`;
}

// 初始化表格
$(function() {
  $('#orderTable').bootstrapTable({
    sidePagination: 'server',
    search: true,
    pagination: true,
    pageSize: 10
  });
});

结论

Bootstrap Table 凭借其低代码、高扩展性的特性,成为 Web 开发中表格组件的“瑞士军刀”。从基础的静态数据展示到复杂的动态交互,它通过清晰的配置和灵活的插件机制,帮助开发者快速构建专业级表格界面。无论是电商订单管理、用户数据分析,还是实时监控看板,掌握 Bootstrap Table 的核心原理与最佳实践,都能显著提升开发效率和用户体验。

建议读者通过官方文档进一步探索 data-toolbar 自定义工具栏、data-detail-view 行详情等高级功能,并结合实际项目需求优化性能。记住,工具的威力不仅在于功能本身,更在于开发者如何巧妙地将其融入业务场景。

最新发布