환경: jqGrid v4.7.1 이하 (무료버전)
개별적으로 사용도 가능하며, jqGrid 내부에서 빈번하게 사용이 이루어지는 reloadGrid 메소드에 대해서 알아본다.
1004lucifer
https://github.com/tonytomov/jqGrid/blob/v4.7.1/js/jquery.jqGrid.js#L2821
}).bind('reloadGrid', function (e, opts) { if (ts.p.treeGrid === true) { ts.p.datatype = ts.p.treedatatype; } // opts.current 값이 true인경우 selectionPreserver 함수를 호출한다. // selectionPreserver 함수는 multiselect 모드인경우 자동으로 호출된다. // http://www.trirand.com/blog/?page_id=393/help/true-scrolling-not-working-and-need-to-keep-selected#p18068 if (opts && opts.current) { ts.grid.selectionPreserver(ts); } // datatype:'local' 이면 모든 row를 선택해제한다. if (ts.p.datatype === "local") { $(ts).jqGrid("resetSelection"); // 데이터가 있다면 normalizeData, refreshIndex 함수를 호출한다. // normalizeData - 데이터정상화 // refreshIndex - row의 index(기본값:id) 초기화 if (ts.p.data.length) { normalizeData(); refreshIndex(); } } // 데이터가 없고 treeGrid가 아니라면 데이터를 초기화 한다. else if (!ts.p.treeGrid) { ts.p.selrow = null; if (ts.p.multiselect) { ts.p.selarrrow = []; setHeadCheckBox(false); } ts.p.savedRow = []; } // 동적 스크롤 그리드 사용 시 데이터(row) 초기화 if (ts.p.scroll) { emptyRows.call(ts, true, false); } // opts.page 값이 있는경우 // [주의사항] // page의 값을 0으로 설정할 수 없으며, reloadGrid 메소드 호출전에 // setGridParam을 이용해 page 값을 0으로 설정하더라도 이부분에서 page가 1로 변경된다. if (opts && opts.page) { var page = opts.page; if (page > ts.p.lastpage) { page = ts.p.lastpage; } if (page < 1) { page = 1; } ts.p.page = page; if (ts.grid.prevRowHeight) { ts.grid.bDiv.scrollTop = (page - 1) * ts.grid.prevRowHeight * ts.p.rowNum; } else { ts.grid.bDiv.scrollTop = 0; } } // 그리드의 데이터를 셋팅한다. // (서버에 요청을 하거나 로컬인경우 해당 페이지의 데이터가 보여지도록 셋팅) if (ts.grid.prevRowHeight && ts.p.scroll) { delete ts.p.lastpage; ts.grid.populateVisible(); } else { ts.grid.populate(); } // inlineNav(네비게이터에서 addRow, editRow, saveRow, restoreRow 버튼) // 사용 시 해당 버튼들을 보여준다. if (ts.p._inlinenav === true) { $(ts).jqGrid('showAddEditButtons'); } return false; })
공식문서에는 trigger("reloadGrid") 방법으로 사용하라고 기술되어있지만 다음과 같이 사용이 가능하다.
trigger("reloadGrid", { current:true, page:3 })
페이지를 업데이트 할 수 있으나 0값으로는 업데이트 할 수 없다.
전체적인 소스를 보니 jqGrid 에서는 page, lastpage 의 최소값의 기준을 1로 설정되어있다.
댓글
댓글 쓰기