layui 2.8+ 支持 footerData 配置项在表格底部渲染合计行,需严格按 cols 字段顺序传二维数组,reload 时必须显式携带,低版本不支持且静默失效。
layui table 合计行怎么加在底部
直接用 footerdata 配置项,不是靠后端拼、也不是手动追加 dom。这个字段是 layui 2.8+ 原生支持的,老版本(如 2.6.x)压根没这功能,强行写会静默失效。
常见错误是把数据塞进 data 数组末尾,指望表格自动识别为合计——它不会。layui 的 data 只负责主体行渲染,合计必须走单独通道。
-
footerData是个二维数组,每项对应一列,顺序和cols中字段顺序严格一致 - 如果某列不需要合计(比如操作列),对应位置填空字符串
''或null - 合计值得自己算好再传进去,layui 不提供自动求和逻辑
示例:
table.render({
elem: '#demo',
cols: [[
{field: 'price', title: '单价', width: 120},
{field: 'num', title: '数量', width: 100},
{field: 'total', title: '小计', width: 120}
]],
data: [...], // 正常数据
footerData: [[
'', // 单价列留空
'总计:' + totalNum, // 数量列显示汇总文字
'¥' + totalAmount // 小计列显示金额
]]
});
合计行文字对齐和样式怎么调
layui 默认把 footerData 渲染成 <td>,但没给 class,所以没法直接用 CSS 选中。得靠列配置里的 <code>style 或 templet 控制单列样式。
容易踩的坑是想全局改 footer 行背景色,结果发现加 .layui-table-footer td 没用——因为 layui 并没有给合计行加专门的容器类,它就混在普通 <tbody> 里(注意:不是 <code><tfoot>)。
<ul>
<li>对齐:在对应列的 <code>align 属性里设,比如 {field:'num', align:'right'}
templet 包一层 <strong></strong>,别依赖 CSS 类名templet 写内联 style="background:#f8f8f8",否则无法精准命中动态更新合计行时 table.reload() 不生效
调 table.reload() 时,如果只传 data,footerData 不会重载——它不属于响应式字段,得显式带上。
典型场景是筛选后重新计算合计,但 reload 里漏了 footerData,页面上合计还是旧的。
- 每次 reload 都要完整传入
footerData,哪怕内容一样 - 不要试图用
table.cache手动改完再触发重绘,layui 不监听这个对象变化 - 如果合计依赖当前页数据(比如只算当前页总和),记得先用
table.cache["id"]拿当前页缓存,再算再传
合计行和固定列一起用会错位
当开启 fixed: true 的列遇上 footerData,右侧固定列的合计单元格经常偏移或宽度异常——这是 layui 2.8.19 之前的老 bug,2.8.20+ 已修复,但很多人卡在旧版。
验证方法:打开浏览器开发者工具,看合计行的 <td> 是否被套进了 <code><div class="layui-table-box"> 里的多个 tbody,如果是,基本就是版本问题。
<ul>
<li>升级到 layui 2.8.20 或更高版本是最稳解法</li>
<li>降级方案是放弃固定列,或把合计行改成用 <code>done 回调手动追加到表格 DOM 底部(不推荐,破坏原生结构)
合计行看着简单,但和分页、筛选、固定列、版本迭代全有关联,最容易被当成“加几行数据”随便搞,结果调半天才发现是 footerData 没随 reload 更新,或者版本太低根本不认这个字段。











