티스토리 뷰
데이터셋에 조회된 쿼리 결과를 바로사용하지 않고 setColumn(), addRow()등의 함수를 통해 조회된 데이터를 한 번 더 가공한 뒤, 그리드에 렌더링해야할 때가 있다.
이럴 경우 데이터셋의 RowType은 INSERT 혹은 UPDATE 상태로 변경되는데, 데이터셋의 ①RowType을 임의로 변경하는 방법과 변경사항을 적용하면서도 ②변경내역이 없었던것 처럼 RowType을 유지하는 방법에 대해 알아본다.
Dataset > updatecontrol
updatecontrol이 디폴트 값인 true로 설정된 경우, 데이터셋 변경사항이 있을 경우(삽입/수정/삭제 등) 변경 종류에 따라 RowType이 자동으로 변경된다.
updatecontrol을 false로 변경하면 RowType이 더 이상 변경되지 않으며, 사용자가 직접 RowType을 변경할 수 있게된다. 하지만 사용자가 변경해주지 않을경우 데이터셋에 변화가 있더라도 rowtype이 더 이상 변하지 않기 때문에 updatecontrol을 false로 고정시켜 놓는 것은 권장하지 않는다.
set_updatecontrol(false) → setRowType → set_updatecontrol(true)
Script상에서 setRowType함수를 통해 직접 updatecontrol을 변경할 수 있다. 이 때 set_updatecontrol이 true인 상태에서 setRowType을 호출하면 아무 변화가 없으니 setRowType을 호출하기 전엔 set_updatecontrol(false)를 줘야한다.
setRowType을 통해 RowType변경을 완료한 이후에는 updatecontrol 값을 다시 true로 되돌려준다.
this.Dataset00.setRowType(rowposition, rowType)
this.Dataset00.set_updatecontrol(false);
this.Dataset00.setRowType(0, "I"); //또는 setRowType(0, Dataset.ROWTYPE_INSERT)
this.Dataset00.setRowType(0, "U"); //또는 setRowType(0, Dataset.ROWTYPE_UPDATE)
this.Dataset00.setRowType(0, "D"); //또는 setRowType(0, Dataset.ROWTYPE_DELETE)
this.Dataset00.setRowType(0, "그외의 값들"); //setRowType(0, Dataset.ROWTYPE_NORMAL)
this.Dataset00.set_updatecontrol(true);
try-catch-finally를 이용한 보완
updatecontrol 값이 false처리된 상태일 때 코드에서 exception이 발생할 수 있다. 이렇게 되면 updatecontrol이 true로 변경되지 못하고 프로그램이 수행되기 때문에 로직상 혼돈이 올 수 있다.
finally 부분에서 set_updatecontrol(true) 처리를 해줌으로써 이를 방지할 수 있다.
try {
this.Dataset00.set_updatecontrol(false);
//exception 발생
this.Dataset00.set_updatecontrol(true); //수행 X
} catch (error) {
//예외처리
} finally {
this.Dataset00.set_updatecontrol(true); // exception 시에도 수행
}
applyChange
데이터셋의 모든 행의 RowType을 NORMAL로 변경하고 싶다면 applyChange()를 이용해도 된다. applyChange()함수는 updatecontrol 상태와 무관하게 항상 적용가능하다.
this.Dataset00.applyChange();
'Programming > nexacro' 카테고리의 다른 글
넥사크로 컴포넌트/그리드 줄바꿈(개행)처리 (0) | 2022.07.18 |
---|---|
넥사크로 캘린더 일자 연산, 더하기 (0) | 2022.07.07 |
넥사크로 Project Explorer - Service 추가 및 순서 변경 (0) | 2022.05.19 |
넥사크로 그리드 행 번호 표시 (0) | 2022.01.10 |
넥사크로 그리드, MaskEdit에 천원단위로 콤마(,) 찍기 (0) | 2021.12.12 |
- Total
- Today
- Yesterday
- C++
- 오라클
- Thymeleaf
- CSS
- SQL
- 인턴
- C
- 프로그래머스
- JSP
- 백준
- JVM
- CS
- 개발용어
- 데이터베이스
- 스프링
- Java
- HeidiSQL
- 이클립스
- svn
- 넥사크로
- 네트워크
- 오류
- 부트스트랩
- 국비교육
- 스프링부트
- Open API
- 환경설정
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |