如何在jQuery DataTable中隐藏列?JSP动态列场景
搞定jQuery DataTables指定列隐藏的几种方法
嘿,我来帮你解决这个DataTables列隐藏的问题!针对你目前有8列、后续可能动态调整列数的场景,这里有几个实用的方案,按需选择就行:
1. 初始化时直接指定隐藏列
如果在表格初始化时就确定要隐藏某些列,可以直接在DataTables的columns配置里设置visible属性。注意列索引是从0开始计数的哦:
$(document).ready(function() { $('#yourTableId').DataTable({ // 这里可以加你的其他配置,比如分页、排序、服务器端参数等 columns: [ { width: "10%", visible: true }, // 第1列:Beneficiary Bank { width: "10%", visible: true }, // 第2列:Depositor's Bank { width: "10%", visible: true }, // 第3列:Type { width: "8%", visible: true }, // 第4列:Reference No { width: "8%", visible: true }, // 第5列:Amount { width: "8%", visible: true }, // 第6列:Date { width: "8%", visible: false }, // 第7列:Bonus? 设为false隐藏 { width: "8%", visible: true } // 第8列:Remarks ] }); });
如果后续列数是服务器端动态返回的,建议让后端同时返回包含visible属性的列配置数组,前端直接把这个数组赋值给columns,这样完全适配动态列的场景。
2. 初始化后动态控制列的显示/隐藏
如果需要在用户操作(比如点击按钮)时才隐藏列,用DataTables提供的column().visible()方法就很方便:
// 隐藏第7列(索引为6,因为从0开始) $('#yourTableId').DataTable().column(6).visible(false); // 要是想重新显示,把false改成true就行 $('#yourTableId').DataTable().column(6).visible(true);
要是怕后续列数变化导致索引失效,还可以通过表头文本定位列,不用记索引:
// 隐藏表头文本为"Bonus?"的列 $('#yourTableId').DataTable().columns('th:contains("Bonus?")').visible(false);
这个方法对动态列特别友好,不管列的位置怎么变,只要表头文本不变就能精准定位。
3. 服务器端模式下的注意事项
如果你的DataTables开启了serverSide: true(服务器端分页/排序),要是只是前端隐藏列不想影响后台数据返回,用前面的前端方法就够了;如果想彻底不让后台返回该列的数据,那就要在后端的查询逻辑里去掉对应字段,但这种方式灵活性不如前端隐藏。
内容的提问来源于stack exchange,提问作者Vivek Mangal
相关产品推荐
相关产品推荐

