如何从DataTables指定列取最大值并通过rowCallback在另一列渲染对应图标
DataTables指定列最大值匹配图标渲染实现方案
核心实现逻辑为先计算目标列最大值,再通过rowCallback逐行比对后渲染对应图标,具体步骤如下:
- 第一步:预计算指定列的最大值
如果是本地静态数据,可在表格初始化前遍历原始数据计算最大值:
// 原始表格数据存储在tableData变量中 const max = Math.max(...tableData.map(item => parseInt(item.num || 0)))
如果是异步加载数据,可在DataTables的initComplete回调中计算最大值后触发重绘即可。
- 第二步:修正rowCallback回调逻辑
原有代码存在标签未闭合的问题,修正后代码如下:
"rowCallback": function(row, data, index) { const currentNum = parseInt(data["num"] || 0) if(currentNum === max ){ $('td:eq(3)', row).html('<a class="btn btn-link btn-success btn-just-icon btn-round"><i class="material-icons">check</i></a>'); } else { $('td:eq(3)',row).html('<a class="btn btn-link btn-danger btn-just-icon btn-round"><i class="material-icons">highlight_off</i></a>'); } },
提示:
td:eq(3)中的数字为列索引,从0开始计数,可根据你实际要渲染图标的列位置调整。
最终实现效果如下:
内容的提问来源于stack exchange,提问作者Jin
相关产品推荐
相关产品推荐


