2014-12-24 2 views
11

필터() 함수는 예상대로 작동하지 않는 나는 수치 내가 노력하고있어보다 60자바 스크립트 DataTables - 나는에 javscript 라이브러리 DataTables 사용하고

있는지 알아 기반으로 행을 필터링하기 위해 노력하고있어 이 예제를 따라 :

table 
    .column(3) 
    .data() 
    .filter(function (value, index) { 
     return value > 60 ? true : false; 
    }) 

문제는 모든 행이 여전히 볼 수 있습니다이며 더 필터링을 전혀 수행되지 않은 : http://datatables.net/reference/api/filter%28%29

필터 코드는 다음과 같습니다. 함수가 단순히 false를 반환하더라도 모든 행은 계속 표시됩니다. 무슨 일 이니?

JSFiddle 예를

http://jsfiddle.net/1hLcpr3x/

답변

12

당신이 열이 아닌 행 자체에서 데이터의 반환 배열을 필터링되는 연결하고있는 예.

당신은 내용을 반환하고 그것을

var filteredArray = table.column(3) 
         .data() 
         .filter(function(value, index) { 
          return value > 60 ? true : false; 
         }) 
         .draw(); 

console.log(filteredArray); 
이는 filter 방법은 당신이 data()로 반환 데이터가 아니라 행을 필터링하는 일이다

FIDDLE

를 기록하여이를 확인할 수 있습니다.

당신의 DataTables 플러그인에 더 구체적으로 $.fn.dataTableExt.afnFiltering 후크 것, 장소에 행을 필터링하고,이

$.fn.dataTableExt.afnFiltering.push(
    function (oSettings, aData, iDataIndex) { 
     return aData[3] < 60; 
    } 
); 

FIDDLE

Documentation for DataTables filtering

+0

감사합니다 같은 것을 수행합니다! 이것은 잘 작동합니다. – user985723

+0

페이지에 여러 개의 datatables이 있습니다. 사용자 정의 후크 필터가 원하는 필터와 만 작동하는지 어떻게 확인합니까? 전달 된 설정 개체에서 테이블을 파생시킬 수 있습니까? – Numeron

+0

@ CanÜrek - 작동하지 않는다는 것은 무엇을 의미합니까? 그것은 60 세 이상인 사람을 걸러냅니다. 마지막 피들에서는 59 세 이상의 사람이 없으므로 잘 작동합니다. – adeneo