如何在Tabulator表格列标题添加按钮,多独立操作列场景如何适配?
实现方案
你原来的代码用headerMenu配置是错误的,headerMenu是用来配置列头右键弹出的菜单,不是直接将元素渲染到列头区域,要实现列头加按钮的效果,用Tabulator提供的titleFormatter自定义列头渲染逻辑即可。
基础实现代码
首先定义列头渲染函数:
// 自定义列头按钮渲染方法 function headerPrimaryBtnFormatter(column, headerEl) { // 直接向列头容器插入按钮 headerEl.innerHTML = `<button type="button" class="btn btn-sm btn-primary">你的按钮文案</button>`; // 绑定按钮点击事件 headerEl.querySelector('button').addEventListener('click', function() { // 此处写按钮触发的逻辑 }); return ''; // 不需要默认标题文本,留空即可 }
然后修改你的列配置,替换原来的headerMenu配置:
let table = new Tabulator("#producteditor", { layout: "fitColumns", pagination: "local", ajaxURL: "api/products", columns: [ { title: "number", field: "number", headerFilter: "input" }, // ... 其他列配置 { title: "", formatter: editBTN, cellClick: editCB, headerSort: false }, { // 删除列不需要配置title,改用titleFormatter自定义渲染 formatter: delBTN, cellClick: delCB, headerSort: false, titleFormatter: headerPrimaryBtnFormatter } ] });
多操作分列场景的实现
拆分编辑、删除为两个独立列的场景完全可以实现该效果,你可以按需给任意列配置titleFormatter:
- 可以只给其中一列加头部按钮
- 也可以给两列分别加不同的头部按钮(比如编辑列头加批量编辑按钮,删除列头加批量删除按钮)
两个列各自的cellClick回调逻辑不受任何影响,和列头渲染逻辑完全独立。
内容的提问来源于stack exchange,提问作者xtlc
相关产品推荐
相关产品推荐

