Datatables排序时相同数据量导致索引错乱问题求助
解决Datatables排序时相同投票数导致索引错乱的问题
这个问题的核心原因是:当Datatables遇到列值相同的行时,默认会按照数据的原始加载顺序(或内部默认规则)排序,不会自动关联你的索引列,所以切换到升序排序时就会出现索引错乱的情况。
要解决这个问题,我们只需要给投票数列添加多列排序规则——让Datatables在投票数相同的情况下,自动按索引列进行二次排序,这样就能保证相同票数的行始终按索引的正确顺序排列。
修改后的代码示例
假设你的索引列是第0列(如果实际不是,只需把代码里的0改成对应列的索引即可,Datatables列索引从0开始):
$(document).ready(function() { otable = $('#dt').dataTable({ "bSortCellsTop": true, "order": [[7, "desc"]], // 默认初始排序:按第7列(投票数)降序 "columnDefs": [ { "targets": 7, // 指定要设置排序规则的列:投票数列(索引7) "orderData": [7, 0] // 排序优先级:先按第7列,再按第0列(索引列) } ] }); });
关键说明
orderData是Datatables的核心配置项,它定义了当对目标列排序时,后续的备用排序列。这里我们设置先按投票数列排序,当遇到相同值时,就用索引列来确定最终顺序。- 不管你手动切换投票数的升序还是降序,这个规则都会生效,相同票数的行都会严格按照索引的顺序排列,不会再出现错乱。
如果你的索引列不是第0列,只需要调整orderData里的第二个数字为你实际的索引列序号就可以了。
内容的提问来源于stack exchange,提问作者Urek Mazino
相关产品推荐
相关产品推荐

