layui table 无 hideCol 方法,隐藏列需初始化时设 hide: true 或动态调用 setCols 后 reload;导出时不自动继承隐藏状态,须手动配置 exportFile 的 cols 参数。
layui table hideCol 方法不存在,别白找
layui 的 table 模块没有 hidecol 或类似内置方法。想“隐藏列”,本质是控制列的渲染——要么初始化时就不配它,要么动态改 cols 配置再重载表格。
初始化时用 hide 属性直接屏蔽列
这是最轻量、最稳定的做法。在 cols 数组里给目标列加 hide: true,它就不会出现在 DOM 里,也不参与宽度计算或排序。
常见错误现象:hide: 'true'(字符串)或 hide: '1' —— 必须是布尔值 true;漏写 field 导致后续无法通过 setCols 动态操作。
使用场景:权限控制列(如“操作”列对普通用户不可见)、调试阶段临时屏蔽冗余字段。
示例:
table.render({
elem: '#demo',
cols: [[
{field: 'id', title: 'ID'},
{field: 'username', title: '用户名'},
{field: 'email', title: '邮箱', hide: true}, // ✅ 这列不渲染
{field: 'status', title: '状态'}
]]
});
动态隐藏列必须调用 setCols + reload
setCols 不会立即生效,只更新内部配置;必须配合 reload 才能重新渲染。漏掉 reload 是最常见的坑。
参数差异:setCols 接收的是完整 cols 数组(不是单列对象),且要求结构和初始化时一致,否则可能错乱表头顺序或丢失列宽。
性能影响:每次 reload 都会触发一次数据重请求(除非配置了 page: false 或 where 缓存),高频切换列建议合并操作或用 CSS 隐藏替代。
实操建议:
- 先用
table.config.cols拿到当前列配置,修改后传入setCols - 如果只是临时视觉隐藏(不涉及导出、列宽自适应等),用 CSS 更快:
th[data-field="email"], td[data-field="email"] { display: none; } - 避免在
done回调里反复setCols+reload,容易触发重复渲染或数据错位
导出 Excel 时隐藏列不会自动生效
layui 的 exportFile 默认导出所有列(包括 hide: true 的)。想导出时也隐藏,得手动过滤 cols 并传给 exportFile 的 cols 参数。
容易踩的坑:
- 直接改
table.config.cols再导出 —— 会影响表格显示,且没还原逻辑 - 导出用的
cols没同步field和title,导致 Excel 表头为空或字段错位 - 忽略
done回调中res.data的字段顺序,和cols不匹配,导出数据列偏移
关键点就一个:导出是独立行为,和表格渲染解耦,该自己拼 cols 就拼,别指望自动继承隐藏状态。

















