Translate

[jqGrid] page, lastpage 값 셋팅 예제







jqGrid 는 page, lastpage를 일부러 셋팅하지 않더라도 일반적으로는 자동으로 셋팅이 된다.
하지만 특정 상황에서는 어쩔 수 없이 page, lastpage를 수동으로 셋팅해야 하는 경우가 발생을 하게 되는데 수동으로 셋팅하는 방법과 주의할 점에 대해서 기술을 한다.



주의사항


 jqGrid는 기본적으로 page / lastpage 의 최소값은 1 /1 이다.
 jqGrid 내부로직에서 page, lastpage 가 잘못된 값인경우 1 또는 올바른 값으로 강제 셋팅되도록 코드가 여기저기 있다.
 따라서 0 / 0 처럼 셋팅을 하려고 시도하면 경우에 따라 셋팅이 잘 안될 것이다.





셋팅방법
1004lucifer
 - setGridParam를 이용하여 page, lastpage를 셋팅 후 updatepager 메소드를 이용하여 그리드의 page, lastpage 값을 업데이트 한다.
(아래 예제에서 page, lastpage 값을 변경하고 버튼을 누르면 값이 업데이트 되는것을 확인 할 수 있다.)











데이터 로딩과 같이 셋팅하기

 - 데이터 로딩 없이 page 번호를 업데이트 하는 경우는 없을텐데, 인터넷에 있는 다른 글에서는 이런 주의사항을 알려주지 않아 한참 시간을 낭비했다.
 - 데이터 로딩과 같이 셋팅 시 페이지 셋팅하는 순서가 중요하다.
   (그리드 내부로직 여기저기서 page, lastpage 가 올바르지 않으면 강제로 값을 변경한다.)

1004lucifer

1. 잘못된 방법
 - setGridParam 메소드로 data, page, lastpage 값을 한꺼번에 수정 후 reloadGrid를 사용한다.









 - reloadGrid가 된 후 page, lastpage 값을 수정 후 updatepager 로 값을 업데이트 한다.
  (하지만 헤더 부분을 클릭하여 정렬 기능을 이용 시 page, lastpage 가 다시 바뀌게 된다.)











2. 올바른 방법
 - loadComplete 이벤트 함수 내에서 page, lastpage 값을 수정 후 업데이트 한다.
  (loadComplete 함수는 대부분의 로직의 마지막에 수행이 되므로 page, lastpage 가 강제로 변경되지 않는다.)






참고 링크
 - updatepager 메소드 설명
 - reloadGrid 메소드 설명
 - populate 메소드 설명




댓글