2013-06-06 1 views
0

멋진 datatables 플러그인 (datatables.net)은 헤더를 클릭 할 때 Shift 키를 누른 상태로 다중 열 정렬을 수행 할 수 있습니다.jQuery DataTables shift없이 다중 정렬

교대 수정자를 사용하지 않고이 기능을 사용할 수 있습니까? 나는 완전히 손해를 본다 : (

+0

저는 서버에 여러 개의 열 정렬을 보내는 방법을 알아내는 어려운 작업이었습니다. 이 질문 자체가 내 질문에 대답했습니다. – avantprime

답변

2

이상한 요청. 물론 이유가있다. 교대를 유지할 필요성을 없애면 사용자가 두 번째 열로 정렬하려고하는지 어떻게 알 수 있을까? 사용자가 두 열을 기준으로 정렬하려는 경우? 사용자가 A 열을 기준으로 정렬을 클릭 한 다음 B 열을 기준으로 정렬하려면 클릭 - B 및 B 만 정렬 할 경우

, Datatables에서이 작업을 수행 할 수있는 방법이 없습니다.이 기능이 있어야하는 경우 소스를 수정할 수 있습니다. 여기에서 예를 들어 http://ajax.aspnetcdn.com/ajax/jquery.dataTables/1.9.4/jquery.dataTables.js과 같이 최소화되지 않은 버전을 다운로드 한 다음 e.shiftKey을 검색하면 코드 대신 if (e.shiftKey)을 입력하고 if(true)으로 설정하거나 if를 주석 처리하십시오.

0

다음은 해결책입니다. (데이터 테이블 버전 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); 
}); 

참고 :

먼저, 데이터 테이블에 클래스를 추가 할 경우에만 데이터 테이블 초기화 후 스크립트를 사용합니다.

관련 문제