2016-09-02 2 views
0

인구수가 포함 된 큰 테이블 (5 열 x 116k 행)이 있습니다.
모집단이 포함 된 열을 합계하고이 합계가 적용된 필터와 함께 변경되어야합니다.
예 : 필자는 필터에 우편 번호를 입력 할 수 있으며이 특정 우편 번호의 인구 합계가 필요합니다.
datatables 페이징을 사용하여 각 행의 합계 값

(I 메인 필터 + 열 https://datatables.net/examples/api/multi_filter.html 당 다중 필터를 사용하고) 나는 합계 API를 사용하여 시도 : https://datatables.net/plug-ins/api/sum()

의미가 있습니다,하지만 그것은 단지 가시 행의 합계를 제공합니다.
검색 필드에 내용을 입력 할 때 필터링 된 행을 제외한 모든 행의 합계를 얻으려면 어떻게해야합니까?

나는 또한 바닥 글 콜백 메서드를 시도했다 https://datatables.net/examples/advanced_init/footer_callback.html
그것은 또한 동일한 문제 : 다른 페이지가 아닌 보이는 행의 합계 만 작동합니다.

가능하면 두 번째 방법 (바닥 글 콜백)을 사용하는 것이 더 좋으며 한 곳에서 모든 것을 유지하기가 쉽습니다.

감사합니다!

+0

서버 측 또는 클라이언트 측 데이터 테이블? – markpsmith

+0

클라이언트 쪽, 순수 JavaScript, 정적 웹 사이트 –

답변

1

나는 당신은 대체 https://datatables.net/examples/advanced_init/footer_callback.html

에서 .column()

{'search': 'applied'}를 사용할 필요가 마침내

를 찾았

.column(4, { page: 'current'}) 

.column(4, {'search': 'applied'}) 

마찬가지로 :

// Total over the search 
searchTotal = api 
    .column(4, {'search': 'applied'}) 
    .data() 
    .reduce(function (a, b) { 
     return intVal(a) + intVal(b); 
    }, 0); 
0

서버 측 페이징 인 "datatables"테이블을 사용하여 모든 값을 합하려면 view dropbox에서 view all을 제공하고 모두 보았을 때 그 값을 가져야합니다.

this linkview all 기능 구현이 있습니다.

또는

datatables의 주요 목적은, 잘 구조화 된 형태로 데이터를 표현하는 모든 값을 요약하지 않는 때문에 총 합계를 반환 다른 아약스 서비스 URL을 제공합니다.

+0

너무 많은 행이 있기 때문에 모든 기능을 사용할 수 없습니다. 이미 페이징을 비활성화하려고 시도했지만 페이지를 사용할 수없는 지점까지 느려집니다. –

+0

다른 제안은 합계를 다시 보내는 다른 서비스 URL을 생성하는 것입니다. 데이터 테이블은 잘 구조화 된 형식으로 데이터를 표현하는 것입니다. – webmaster