2017-04-03 2 views
0

좋은 아침 모두,JQuery와 DataTables 매김 캐싱과 다음 버튼은 자신의 시간과 도움을 주신 모든 분께 감사의 말함으로써 첫 페이지에

그냥 시작하려는 작업!

나는 S.O. DataTables 포럼 (후자는 대개 "레거시"버전의 DataTables)에서이 문제를 논의하고 "해결 된"표시로 끝나기 때문에 일반적으로 제안 된 솔루션을 알고 있습니다. 즉, 이것은 알고있는 한 중복되지 않습니다.

문제는 다음과 같습니다. 클라이언트 측 페이지 캐싱 기능이있는 DataTables 서버 측 페이지 매김에 작동하지 않는 "다음"버튼이 있습니다. 페이지 매김 자체가 잘 작동하고 캐싱이 잘 작동하며 서버와주고받는 데이터는 문제가 없습니다. "이전"버튼이 정상적으로 작동하고 페이지 번호를 클릭하면 테이블 페이지 사이를 탐색하여 데이터를 표시하는 데 문제가 없습니다.

표준 제안 솔루션은 JSON 응답에 "recordsTotal"및 "recordsFiltered"매개 변수에 올바른 값이 설정되도록하는 것입니다. 그러나 필자는 필자의 경우 두 레코드가 실제로 동일한 값이고 레코드가 필터링되지 않았 음을 확인할 수 있습니다.

첫 번째 스크린 샷에서 볼 수 있듯이 테이블의 초기로드는 올바른 개수와 데이터를 표시합니다.

두 번째 스크린 샷은 "다음"버튼을 한 번 클릭 한 후 테이블 모양을 보여줍니다. "533 개의 레코드 중 0, 101 ~ 533을 표시합니다."라는 레이블을 주목하십시오. 이 시점에서 이전 버튼을 클릭하면 작동하여 첫 번째 페이지를 올바르게 표시합니다. 페이지 단추가있는 다른 페이지로 이동하면 다음 단추가 완전히 작동하지 않으며 이전 단추는 계속 작동합니다.

세 번째 스크린 샷은 테이블이 "가정"한 모양을 보여 주며 탐색에서 페이지 2를 클릭하면 실제로 어떻게 보이는지 보여줍니다.

제어 할 수있는 모든 변수가 올바르게 설정되어있는 것처럼 보일지조차 알지 못합니다. 거의 JQuery/DataTables 코드에서 두 개의 정수를 추가하는 대신 두 개의 문자열을 연결하는 것처럼 보입니다. 아마도 이것은 파이프 라이닝/캐싱 코드에서 발생했을 것으로 생각되었지만 소스를 찾을 수 없거나 산술 연산을 이해하지 못했습니다.

캐싱은 다음과 같이 설정됩니다. 클라이언트의 50 개 레코드를 유지하면서 한 번에 10 개씩 테이블에로드하는 방식입니다. 서버에 대한 호출이 발생하면 "다음"또는 "이전"50이 임계 값을 초과 할 때마다 반입됩니다.

관련성이 높은 경우 캐싱에 사용하는 코드는 DataTables에서 제공하는 예제 코드의 약간의 수정 인 https://datatables.net/examples/server_side/pipeline.html입니다. 내 테이블에서 캐싱을 비활성화하면 문제가 전혀 변하지 않았 음을 알 수 있습니다.

누군가가 내가 단서 또는 해결책을 찾아야하는 아이디어가 있다면, 당신의 도움을 많이 주시면 감사하겠습니다!

[![Screen1][1]][1] 
[![Screen2][2]][2] 
[![Screen3][3]][3] 


[1]: https://i.stack.imgur.com/2pzup.png 
[2]: https://i.stack.imgur.com/qykJC.png 
[3]: https://i.stack.imgur.com/W2Pu6.png 

편집 : 스크린 샷이 표시되지 않는 것에 대해 죄송합니다. 어떤 이유로 든 기본적으로 렌더링 된 방식으로 제출할 수 없습니다. 유효성 검사에서 제출 한 내용에 "코드 형식이 아닌 코드"가 있음을 계속 알려주었습니다. 감사!

답변

0

글쎄, 끔찍한 형태 (열악한 쇼, 열악한 쇼)이지만, 나는 내 자신의 질문에 대한 답을 찾았습니다. 처음에 질문을하기 전에 이것에 시간을 보냈다는 것을 명심하십시오.

어쨌든 DataTable을 초기화하는 동안 "문자열"유형을 "숫자"유형으로 변환하지 못했습니다 (연결이 발생했다는 답변에 가까웠습니다). 내 코드는 테이블의 표시 길이로 DataTables 코드에 "10"을 전달했습니다. 외관상으로는 내부적으로 전환이 발생하지 않았다는 것 (즉, DataTables이 매개 변수를 숫자로 변환하려고 시도하지 않음)에 놀라지 만, 처음에는 그러한 가정을하는 것이 여전히 내 잘못입니다.

더 명확한 설명이 있으면 언제든지 =) 공유하십시오.

감사합니다.