반응형
3주차 이후 - 2~3일차: 실전 CRUD - 목록 화면 개발
학습 목표
- Spring Boot 백엔드에서 제공하는 게시글 목록 API를 호출하여 넥사크로 그리드에 데이터를 표시한다.
- 그리드에서 특정 행을 클릭했을 때 상세 화면으로 이동하는 기능을 구현한다.
1. 넥사크로 프로젝트 준비
새 Form 생성:
Project Explorer에서Forms폴더에 마우스 오른쪽 클릭 >Add > Form을 선택하여frm_board_list.xfdl을 생성합니다.데이터셋 정의:
Invisible Objects에ds_board_list데이터셋을 생성하고, SpringBoard엔티티의 필드(id,title,content,author,createdAt)와 동일한 컬럼을 정의합니다.컴포넌트 배치:
frm_board_list에 다음 컴포넌트들을 배치합니다.Grid컴포넌트:name을grd_board로 설정하고,binddataset을ds_board_list로 설정합니다. 그리드를 더블클릭하여Recreate버튼을 눌러 컬럼을 자동 생성합니다.Button컴포넌트:name을btn_search로,text를 "조회"로 설정합니다.Button컴포넌트:name을btn_new로,text를 "새 글"로 설정합니다.
2. 게시글 목록 조회 기능 구현
Form
onload이벤트: Form이 로드될 때 자동으로 게시글 목록을 조회하도록onload이벤트에 스크립트를 작성합니다.// frm_board_list.xfdl Script this.frm_board_list_onload = function(obj:nexacro.Form,e:nexacro.LoadEventInfo) { this.fn_search(); // Form 로드 시 조회 함수 호출 }; // [조회] 버튼 클릭 이벤트 this.btn_search_onclick = function(obj:nexacro.Button,e:nexacro.ClickEventInfo) { this.fn_search(); }; // 게시글 목록 조회 함수 this.fn_search = function() { var strUrl = "http://localhost:8080/api/board"; // Spring Boot API 주소 this.transaction( "tr_board_list", // 서비스 ID strUrl, // 요청 URL "", // InDatasets (보낼 데이터셋 없음) "ds_board_list=this.ds_board_list", // OutDatasets (응답 데이터를 ds_board_list에 매핑) "", // Argument (보낼 파라미터 없음) "fn_callback" // 콜백 함수 ); }; // 콜백 함수 this.fn_callback = function(strSvcID, nErrorCode, strErrorMsg) { if (nErrorCode < 0) { this.alert("통신 실패: " + strErrorMsg); return; } if (strSvcID == "tr_board_list") { this.alert("게시글 " + this.ds_board_list.getRowCount() + "건이 조회되었습니다."); } };
3. 상세 화면 이동 기능 구현
그리드에서 특정 게시글을 더블클릭했을 때 상세 화면으로 이동하도록 합니다.
그리드
oncelldblclick이벤트:grd_board컴포넌트의oncelldblclick이벤트에 스크립트를 작성합니다.// grd_board.oncelldblclick 이벤트 this.grd_board_oncelldblclick = function(obj:nexacro.Grid,e:nexacro.GridClickEventInfo) { // 현재 선택된 행의 ID 값을 가져옵니다. var nBoardId = this.ds_board_list.getColumn(e.row, "id"); if (this.gfn_IsNull(nBoardId)) { return; } // 상세 화면을 팝업으로 띄우거나, 현재 Form을 상세 화면으로 전환하는 로직 // 여기서는 간단하게 alert으로 ID를 표시합니다. (다음 단계에서 상세 화면 구현) this.alert("선택된 게시글 ID: " + nBoardId); // TODO: 다음 단계에서 상세 화면(frm_board_detail.xfdl)을 띄우는 코드로 대체 // this.gfn_openDetailForm(nBoardId, "update"); }; // 공통 Null 체크 함수 (이전 주차에서 작성) this.gfn_IsNull = function (sValue) { if (new String(sValue).valueOf() == "undefined") return true; if (sValue == null) return true; if (("x" + sValue == "xNaN") && (new String(sValue.length).valueOf() == "undefined")) return true; if (sValue.length == 0) return true; return false; }
오늘의 과제
-
frm_board_list.xfdlForm 생성 및 컴포넌트 배치 -
ds_board_list데이터셋 정의 - 게시글 목록 조회 기능 구현 및 Spring Boot 서버와 연동하여 데이터가 그리드에 잘 표시되는지 확인
- 그리드 더블클릭 시 선택된 게시글 ID를 알림으로 띄우는 기능 구현
반응형
'프론트엔드 > 넥사크로' 카테고리의 다른 글
| [Nexacro] 3주차 이후 - 6일차: 심화 학습 및 다음 단계 (0) | 2025.09.24 |
|---|---|
| [Nexacro] 3주차 이후 - 4~5일차: 실전 CRUD - 상세/등록/수정 화면 개발 (0) | 2025.09.24 |
| [Nexacro] 3주차 이후 - 1일차: 실전 CRUD 프로젝트 - 기획 및 백엔드 준비 (0) | 2025.09.24 |
| [Nexacro] 2주차 - 4~5일차: 서버 통신 (Transaction) (0) | 2025.09.24 |
| [Nexacro] 2주차 - 3일차: 데이터 바인딩(Data Binding) (0) | 2025.09.24 |
| [Nexacro] 2주차 - 1~2일차: 데이터셋(Dataset) 완전 정복 (0) | 2025.09.24 |
| [Nexacro] 1주차 - 4~5일차: "Hello World" 및 이벤트 처리 (0) | 2025.09.24 |
| [Nexacro] 1주차 - 2~3일차: 핵심 용어 및 넥사크로 스튜디오 탐색 (0) | 2025.09.24 |