doSave와 같은 저장 함수를 이용하면, 저장 완료 후 시트가 갱신되며, 기존의 포커스를 잃고 최상단으로 스크롤이 이동됩니다.
이때, 임의의 외부 변수를 두어 현재 행(Row) 객체를 담아두고, 조회가 완료된 뒤 동작하는 이벤트 onSearchFinish에서 추출한 행(Row) 객체를 이용하여 스크롤을 저장하기 전 위치로 이동할 수 있습니다.
//임의의 행 객체를 담을 변수 var tempRow = null; //스크롤의 위치를 담을 변수 var tempScroll = null; //저장 기능 이용 시, 임의의 function save function save() { //변수가 비어 있을 경우, 마지막 focus if(tempRow == null) { tempRow = sheet.getFocusedRow(); tempScroll = sheet.getScrollTop(); } sheet.doSave(); } //조회 후 동작하는 이벤트 onSearchFinish: function(evt) { if(tempRow != null) { //시트의 포커스를 저장 전에 위치하던 행(Row)로 지정, 현재의 Row객체와 저장한 Row객체는 다른 객체이기 때문에 동일한 값을 가지는 id로 행(Row) 객체 호출 evt.sheet.focus(evt.sheet.getRowById(tempRow.id)); //저장 전에 위치했던 위치로 이동시킵니다. evt.sheet.setScrollTop(tempScroll); //스크롤 이동 후, 변수 초기화 tempRow = null; tempScroll = null; } }