서버 기반 페이지네이션(Pagination)

큐셀 그리드에 보여줄 데이터 row(건)수가 많은 경우 모든 데이터가 그리드 내에 표현되면서 상하스크롤이 자동으로 생깁니다.
이럴 경우 가독성이 떨어지는데 이때 활용할 수 있는 방법이 Pagination 입니다.
즉, 데이터를 여러 페이지로 구분하여 보여주는 방식으로 한 페이지에 보여줄 데이터의 수를 정하면 몇 페이지로 보여줄지가 결정됩니다.
클라이언트 방식의 경우 모든 데이터를 내려 받은 후 페이지별로 구분하여 볼 수 있게 해주는 것이고 서버 호출기반은 그리드가 생성될 때 서버의 프로그램을 호출하면서 첫 페이지의 데이터와 몇 페이지로 구성되는지의 정보를 받아서 큐셀 그리드를 보여주는 방식입니다.
사용자가 다음 페이지나 이전 페이지를 누를 경우 요청하는 페이지와 화면에 뿌려줄 데이터 건수를 인자로 하여 서버 프로그램(/getQcellList2.do)을 호출합니다.

처음에 전달되는 것은 첫 페이지, 페이지당 보여줄 row 수, 필요에 의해 전달한 param가 됩니다.
param은 옵션이고 pageindex와 pageunit은 꼭 서버로 전달해 주어야 합니다. 전달 받은 대상 서버 프로그램은 전체 데이터 수와 함께 현재 페이지에 페이지 수만큼의 데이터를 준비하여 응답해줘야 합니다.
서버에서 내려오는 전체 데이터 수와 큐셀 생성 시 설정한 pageunit(페이지당 row 수)을 가지고 하단에 페이지 넘버링을 합니다.
그 이후엔 페이지를 누르면 해당 페이지의 pageindex와 pageunit을 서버로 넘겨주어 해당 구간의 데이터를 받아 보여줍니다.

pageindex: 1
pageunit: 10
param: {"data1":"1","data2":"2","data3":"3"}

서버에서는 데이터와 함께 전체 데이터수를 전달합니다. 큐셀 그리드는 받은 데이터를 화면에 뿌려주고 전체 데이터 수를 기반으로 페이지 번호를 재계산하여 반영합니다.
이러한 프로그래밍을 할 수 있는 기본적인 구조를 포함하는 샘플입니다.
전자정부 프레임워크가 제공하는 데이터처리 객체를 사용하여 검색과 정렬 설정이 된 것을 반영한 pagination이 됩니다.
한번에 가져오는 샘플은 주석처리가 되어 있습니다. 이를 풀면 확인해 보실 수 있습니다.
이때 호출하는 서버 프로그램은 /getQcellList1.do 입니다.

참고로 pagination에 대한 설정은 api 문서의 pagination을 꼭 참조하십시오.
서버는 응답으로 객체를 보내주며 객체 안에는 데이터 array와 데이터 수를 아래와 같은 형태로 제공하고 있습니다.
{"data":"[{\"id\":\"SAMPLE-00001\",\"name\":\"Runtime Environment\",\"description\":\"Foundation Layer\",\"useYn\":\"Y\",\"regUser\":\"eGov\"},.........,{\"id\":\"SAMPLE-00010\",\"name\":\"Runtime Environment\",\"description\":\"Integration Layer\",\"useYn\":\"Y\",\"regUser\":\"eGov\"}]","datacount":114} 큐셀은 이 응답을 자동으로 처리하여 화면에 반영해 줍니다.
서버쪽 프로그램을 작성하는 개발자는 이 구조에 맞게 응답을 해 주어야 합니다.