Bootstrap 如何在表格中添加操作按钮 Bootstrap 数据操作优缺点

风宇同学_3507

风宇同学_3507

2026-04-17

774人浏览

原创

formatter是添加操作按钮的核心入口,通过columns中配置列并返回html字符串实现;接收value、row、index参数,需用事件委托绑定点击行为,禁用内联onclick,避免xss与性能问题。

bootstrap 如何在表格中添加操作按钮 bootstrap 数据操作优缺点

bootstrap-table 的 formatter 是添加操作按钮的核心入口

直接在 columns 配置里加一列,用 formatter 返回按钮 HTML 字符串,这是最常用也最可控的方式。它不依赖服务端返回按钮字段,也不需要额外 DOM 操作,渲染时机由表格自身控制。

常见错误是把按钮写成静态字符串(比如 "<button>编辑</button>"),结果点击没反应——因为事件没绑定;或者用 onclick="editRow(...)" 写内联 JS,但函数未定义或作用域不对。

  • formatter 函数接收三个参数:value(当前单元格值)、row(整行数据)、index(行索引),必须靠 row.id 或类似主键字段定位目标记录
  • 按钮 class 最好带唯一标识,比如 class="btn-edit" data-id="'+row.id+'",后续用事件委托绑定更安全
  • 避免在 formatter 里直接调用 $.ajax 或复杂逻辑,会拖慢表格渲染速度

用事件委托绑定按钮点击比内联 onclick 更可靠

表格重绘(如分页、刷新、搜索)后,内联 onclick 绑定的函数容易失效或重复绑定;而用 $(document).on('click', '.btn-delete', ...) 可以一次注册、长期有效。

典型场景:用户点“删除”,弹确认框,再发请求;点“详情”,打开 Modal 并填充 row 数据。这些动作都该在事件回调里做,而不是塞进 formatter。

  • 不要在 formatter 中写 onclick="deleteItem('+row.id+')",数字 ID 拼接易出错,字符串字段含引号会直接 break JS
  • 推荐写法:return '<button type="button" class="btn btn-sm btn-danger btn-delete" data-id="' + row.id + '">删除</button>';
  • 事件绑定示例:$(document).on('click', '.btn-delete', function() { const id = $(this).data('id'); confirmAndDelete(id); });

toolbar 配置适合批量操作,不是每行按钮的替代方案

toolbar 是表格上方的工具栏容器,用来放“新增”“批量删除”“导出”这类作用于全表或选中行的操作,和每行末尾的“编辑/查看”性质不同。混用会导致交互意图模糊。

VPS Bootstrap
VPS Bootstrap

从零启动全新 VPS,完成 OpenClaw 完整部署,包括备份/恢复及恢复后验证。用于 OpenClaw 部署。

下载

比如用户点了某行的“编辑”按钮,又点了 toolbar 里的“编辑”,两者行为不一致(单行 vs 批量),UI 上也容易误点。

  • toolbar 值是一个 CSS 选择器,如 toolbar: '#toolbar',对应页面上一个 <div id="toolbar"></div>
  • toolbar 按钮通常配合 $table.bootstrapTable('getSelections') 获取选中行,不能直接拿到某一行上下文
  • 如果真要实现“点某行再点 toolbar 编辑”,得自己维护选中状态(比如监听 check.bs.table 事件),成本高于直接在行内放按钮

服务端渲染按钮字段 vs 前端 formatter:性能与灵活性权衡

有人让后端在 JSON 数据里直接返回 "action_html": "<button>..."</button> 字段,前端原样插入。这种方式省事,但隐患多:XSS 风险高、按钮样式难统一、无法动态禁用(比如“已归档”行禁用编辑)、调试困难。

相比之下,formatter 虽然多写几行 JS,但所有逻辑可控,按钮状态可基于 row.status 动态生成,还能结合权限字段做显隐控制。

  • 服务端返回 HTML 字段时,务必对内容做严格转义,否则 row.name 含 " 或 <script></script> 会破坏结构
  • 前端生成按钮能轻松实现“编辑”变“保存中…”:先改按钮文字+禁用,请求完成后再还原,这种反馈体验服务端无法提供
  • 小数据量(

真正容易被忽略的是按钮状态同步问题:比如点“删除”后,表格没刷新,但用户又去点同一行的“编辑”,这时候拿的还是旧数据。要么删完调 $table.bootstrapTable('refresh'),要么手动用 $table.bootstrapTable('removeByUniqueId', id) 删除本地行——后者快,但要注意是否启用了 sidePagination: 'server'。

相关专题

更多
python是前端还是后端
python是前端还是后端

Python属于前端也属于后端,其灵活性和丰富的生态系统使得开发人员能够在不同的领域中灵活运用。本专题为大家提供python相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.11

2603

5

前端如何实现即时通讯
前端如何实现即时通讯

实现即时通讯的方法有WebSocket、Long Polling、Server-Sent Events、WebRTC等等。详细介绍:1、WebSocket,它可以在客户端和服务器之间建立持久连接,实现实时的双向通信,前端可以使用 WebSocket API来创建WebSocket连接,并通过发送和接收消息来实现即时通讯;2、Long Polling,是一种模拟实时通信的技术等等。

2023.10.09

5623

6

前端和后端的区别
前端和后端的区别

前端关注的是用户界面的设计和交互,而后端则注重数据处理和逻辑控制。想了解更多前端后端的相关内容,可以阅读本专题下面的文章。

2024.03.19

6630

13

php和前端的关联介绍
php和前端的关联介绍

php既可以作为前端语言,也可以作为后端语言。想了解更多php和前端的相关内容,可以阅读本专题下面的文章。

2024.03.22

6298

10

前端外包工作内容有哪些
前端外包工作内容有哪些

前端外包工作内容包括:1. 网站和应用程序开发;2. 用户界面和交互设计;3. 用户体验优化;4. 设计和视觉开发;5. 跨浏览器兼容性;6. 性能优化;7. 维护和更新;8. 项目管理和沟通。想了解更多前端的相关内容,可以阅读本专题下面的文章。

2024.05.22

903

5

html5动画制作有哪些制作方法
html5动画制作有哪些制作方法

html5动画制作方法有使用CSS3动画、使用JavaScript动画库、使用HTML5 Canvas等。想了解更多html5动画制作方法相关内容,可以阅读本专题下面的文章。

2023.10.23

4271

6

HTML与HTML5的区别
HTML与HTML5的区别

HTML与HTML5的区别:1、html5支持矢量图形,html本身不支持;2、html5中可临时存储数据,html不行;3、html5新增了许多控件;4、html本身不支持音频和视频,html5支持;5、html无法处理不准确的语法,html5能够处理等等。想了解更多HTML与HTML5的相关内容,可以阅读本专题下面的文章。

2024.03.06

7428

6

html5从入门到精通汇总
html5从入门到精通汇总

想系统掌握HTML5开发?本合集精选全网优质学习资源,涵盖免费教程、实战项目、视频课程与权威电子书,从基础语法到高级特性(Canvas、本地存储、响应式布局等)一应俱全,适合零基础小白到进阶开发者,助你高效入门并精通HTML5前端开发。

2025.12.30

814

19

html5新老标签汇总
html5新老标签汇总

HTML5在2026年持续优化网页语义化与交互体验,不仅引入了如<header>、<nav>、<article>、<section>、<aside>、<footer>等结构化标签,还新增了<video>、<audio>、<canvas>、<figure>、<time>、<mark>等增强多媒体与

2025.12.30

714

12

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Bootstrap5 入门教程
Bootstrap5 入门教程

共0课时 | 0人学习

Bootstrap Components 组件文档
Bootstrap Components 组件文档

共0课时 | 0人学习

Bootstrap Grid 栅格系统
Bootstrap Grid 栅格系统

共0课时 | 0人学习