很棒的数据表插件 (datatables.net) 能够通过在单击标题时按住 shift 来进行多列排序。
有没有办法在不按住 shift 修饰符的情况下启用它?我完全不知所措:(
很棒的数据表插件 (datatables.net) 能够通过在单击标题时按住 shift 来进行多列排序。
有没有办法在不按住 shift 修饰符的情况下启用它?我完全不知所措:(
奇怪的请求。当然,它的存在是有原因的。如果您消除了按住 shift 键的要求,您如何知道用户是想完全按第二列排序,还是希望按两列排序?如果用户单击对 A 列进行排序,然后单击对 B 列进行排序 - 用户是要按 A 和 B 排序还是只按 B 排序?
无论如何,我看不到在 Datatables 中执行此操作的方法。如果您必须具有此功能,则可以修改源。如果您下载非最小化版本,例如从这里下载:http: //ajax.aspnetcdn.com/ajax/jquery.dataTables/1.9.4/jquery.dataTables.js,然后搜索e.shiftKey
,您将看到代码。而不是if ( e.shiftKey )
,只需 make 它if(true)
,或注释掉 if。
这是一个解决方案。(使用数据表版本 1.10.12 测试)
您必须取消绑定单击事件并手动重新创建排序功能。
首先,在数据表中添加一个类:
<table class="datatableMultiSorting">
然后添加 JS :
$('.datatableMultiSorting th').unbind('click.DT');
$('.datatableMultiSorting th').click( function () {
currentTable = $(this).closest(".datatableMultiSorting").dataTable();
thisIndex = $(this).index();
//console.log(thisIndex);
var sortArray = [];
$(this).siblings().andSelf().each(function(index) {
if(index==thisIndex){
if ($(this).hasClass("sorting")){
sortArray.push([index,'asc']);
}
if ($(this).hasClass("sorting_asc")){
sortArray.push([index,'desc']);
}
} else{
if ($(this).hasClass("sorting_asc")){
sortArray.push([index,'asc']);
}
if ($(this).hasClass("sorting_desc")){
sortArray.push([index,'desc']);
}
}
});
currentTable.fnSort(sortArray);
});
注意:仅在数据表初始化后使用脚本。