2013-05-27 4 views
0

저는 pageSize 구성을 20으로 언급했으며 독자는 totalCount 구성을 언급했습니다. 나는 자바로 서블릿에 프록시 요청을한다. 서블릿은 MySQL 테이블에서 데이터를 가져오고 500 행을 포함하는 json을 빌드하고 json의 totalCount 구성을 500으로 설정합니다. 마지막에 store.loadPage (1)를 호출합니다. 이 모든 작업에도 불구하고 그리드의 모든 페이지에 500 개의 모든 레코드가로드됩니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?ExtJS 4.2 pageSize가 작동하지 않습니다.

내가 JSON은 서블릿에서 반환 내 코드

var store = Ext.create('Ext.data.Store', { 
    model: 'AM.model.User', 
    pageSize: 20, 
    proxy: { 
     type: 'ajax', 
     url: '/pwbench/FcmServlet', 
     reader: { 
      type: 'json', 
      totalProperty: 'total', 
      root: 'start' 
     }, 
     writer: { 
      type: 'json' 
     } 
    }, 
}); 

의 몇 스냅 샷을 준 아래의이 [ "총"과 같다 : "500", "시작": [{.... }]]

http://docs.sencha.com/extjs/4.2.1/extjs-build/examples/grid/paging.html에서 그리드 페이징 예제를 확인했는데 내 페이징이 작동하지 않는 이유를 이해할 수 없습니다. 도와주세요.

답변

1

서블릿은 DB에서 500 개 행을 가져 와서 JSON 응답에 500 개 행을 구축하는 경우는, 당신은 모든 레코드를 얻고있는 이유는 정확히 입니다 모든 500 개의 레코드를 보내므로

페이징을 원한다면 SQL 쿼리 (최상) 또는 요청 후 전달되는 제한 매개 변수와 일치하도록 행 수를 제한하는 일부 사후 쿼리 프로세스에 일부 논리를 구현해야합니다 (할 수 있지만 권고하지는 않음).

MySQL의 경우 일반적으로 limit SOMEMAXNUMBER offset SOMEPAGENUMBER을 통해 수행됩니다. 이것은 첫 번째 행에서 시작하여, 처음 20 개 행을 반환

select * 
from sometable 
order by column 1 ASC 
limit 20 offset 1 

: 같은

그래서 당신의 페이지 크기가 20 인 경우, 쿼리가 보일 수 있습니다. 그런 다음 다음 페이지가 요청되면 오프셋이 적절하게 변경되는 식으로 진행됩니다.

+0

감사합니다. totalCount는 그리드의 전체 레코드 수를 반영해야한다고 생각했지만 서버 측에서 한 번에 테이블에서 pageSize 레코드 수를 가져와야합니다. –

+0

@existdissolve, 데이터를 제한하기위한 JSON 응답에 대한 사후 쿼리 프로세스 솔루션이 있습니까? –

+0

당신이 그것을 할 방법 (나는 당신이하지 말 것을 강력히 추천한다)은 당신의 모든 레코드를 질의 한 다음 그 레코드들을 반복하는 것입니다 ... "start"행에서 시작하여 "start"+ " pageSize "입니다. 이것은 정말 나쁜 접근입니다. 왜냐하면 처리 시간이 db의 총 레코드 수에 비례하여 증가하기 때문입니다 ... 수백만 레코드가 있다면 상상해보십시오 :) – existdissolve

0

페이징 도구 모음이 정의되면 서버에 대한 요청에는 페이지, 시작 및 제한이라는 세 가지 추가 매개 변수가 있습니다.
autoLoad : {start: 0, limit: 20}을 상점에 추가하십시오. 그리고이 매개 변수에 따라 자바 코드를 업데이트하십시오.
* 당신의 PagingToolbar에 store: your_Store을 추가하는 것을 잊지 마십시오

+1

페이징 도구 모음에 pageSize를 추가 할 필요가 없습니다 (Ext.toolbar.Paging의 구성조차도 아닙니다). 페이징 도구 모음은 저장소의 구성에서 구동됩니다. – existdissolve

관련 문제