2016-10-14 2 views
0

https://datatables.net/examples/basic_init/table_sorting.html기본 소스 데이터 객체

$(document).ready(function() { 
    $('#example').DataTable({ 
     "order": [[ 3, "desc" ]] 
    }); 
}); 

문서의 예는 소스로 어레이 배열을 사용하여 인덱스를 지정하여 순서를 정의하는 배열 인 경우.

소스가 객체의 배열 일 때 어떻게 기본 순서를 지정할 수 있습니까?

나는

 "order": [[ "attribute_name", "desc" ]] 

로 작성하는 시도했지만 작동하지 않습니다. 나는 당신이하고자하는 열의 인덱스 있어야 documentation 주문 기능 (또는 귀하의 경우 주문 개체의 배열의 첫 번째 위치)의 첫 번째 매개 변수에 따르면이 오류

Uncaught TypeError: Cannot read property 'aDataSort' of undefined

답변

1

를 얻을 수 정렬.

이 문제를 해결하려면 대신 속성 값을 원하는 열의 인덱스를 반환하는 함수로 설정할 수 있습니다. 그래서 예를 들면 :

$(document).ready(function() { 
    function findColumn(input) { 
    return function(element) { 
     return element.sTitle === input; 
    } 
    } 

    var myDataTable = $('#example').DataTable(); 
    var columnIWant = "Office"; 
    var indexOfThatColumn = myDataTable.context[0].aoColumns.find(findColumn(columnIWant)).idx; 

    myDataTable.order([indexOfThatColumn, "desc"]); 
}); 

은 틀림이 (! 기능하지만) 매우 추한이지만,이 리팩토링 일부 괜찮은 해결책이 될 수 있습니다.

+0

이것은 매우 흥미로운 해결책처럼 보입니다! 감사. 이름을 인덱스에 매핑하는 객체를 만들려고했지만 나중에 변경할 필요가있을 때 얼마나 어려울지를 알 수있었습니다. – ave

관련 문제