넥사크로 Dataset & Binding

형아·2025년 1월 8일

Nexacro

목록 보기
13/18

Dataset

  • 데이터를 테이블(2차원) 형태로 관리하는 오브젝트
    쉽게말해, DB의 table 구조와 같다.
  • 내부에서 사용하는 데이터로 컴포넌트와 바인딩하여 사용
  • 서버와의 통신시 데이터를 주고받는 형식으로 사용
  • 데이터가 수정, 삭제되면 변경 전 내용을 Origin Buffer에 저장

즉, SQL문을 통해 나온 결과물을 Dataset으로 만들어냄

DB table에 있는 type, size 정보를 가져올 수 있다.
DB 나 Server Framework가 준비되어 있지 않아도 test data를 만들 수 있다.



Dataset 생성

  1. Dataset 아이콘 클릭 > Form 내부 클릭

Dataset은 invisible object이기 때문에 Form 영역에선 보이진 않고 하단의 invisible object 에서 확인할 수 있음

  1. Dataset 더블클릭 > Dataset Editor
    우측에 Dataset Editor이 생성됨

  1. 컬럼(Columns) 추가
    : Add 아이콘을 눌러서 추가하면 됨
  1. 데이터(Rows) 추가
    : Add 아이콘 눌러서 추가
    1. Row를 복붙
    2. 하단에 Source 탭 클릭 > Dataset Source Editor에서 xml 포맷 데이터 복붙
      (엑셀 데이터를 넣을 수는 없음. 꼭 xml 데이터)



바인딩(Binding)

컴포넌트와 데이터셋(Dataset) 간에 데이터를 연결하여 자동으로 값을 표시하고 동기화하는 것.

바인딩 동작 원리

  1. 컴포너트 초기화
  • 폼이 로드될 때, 컴포넌트와 데이터셋이 연결되고 데이터가 표시
  1. 데이터셋 변경시 동기화
  • 데어터셋의 값이 변경되면 바인딩된 컴포넌트도 자동으로 업데이트
  1. 컴포넌트 변경시 데이터셋 업데이트
  • 사용자가 컴포넌트에서 값을 변경하면 데이터셋의 값도 자동으로 업데이트

1. 단일 바인딩

데이터 셋의 특정 컬럼을 컴포넌트의 특정 속성과 연결
컴포넌트는 데이터셋에서 선택된 행(Row)의 값을 표시하거나 수정할 수 있음

예 ) Edit과 Dataset의 단일바인딩

  • Dataset 클릭+드래그해서 Name에 올림
    Bind Item 창 > Column ID 에 FULL_NAME 선택
  • Name 컴포넌트 클릭 > Properties > Bindable에서 확인 가능
  • 좌측 트리구조에서 클릭+드래그 올려도 됨
    현재 렌더링 되는 폼 > Objects > table 선택 > Column 선택



주의점

  1. Emp ID

같은 방식으로 Emp ID도 dataset을 했는데, invalid value 가 뜬다.

이유
해당 컴포넌트는MaskEdit
MaskEdit 는 속성의 type 과 format을 잘 확인해야 함.

해결
EMP ID가 String 인데 Number로 설정되어 있었음

추가
잘 모르겠으면 해당 속성(프로퍼티)를 클릭하고 도움말(단축키 : F1) 해당 프로퍼티 설정에대한 도움말을 줌.

여기서 format 형식의 도움말을 보고
EMP ID 형식이 'AA001' 이러하기 때문에 AAA-###

  1. Salary
    Salary의 data format을 #,##0.00 이렇게 설정함

이유
원자리에 0을 지정한 이유
: 숫자 컬럼인 경우 데이터가 없을 시 null값이 들어감. 숫자 타입이기 때문에 default를 0으로 출력되길 원하는 요구사항 발생. default를 0으로 하기 위해서는 원자리에 0을 설정해야함. #으로 하면 값이 없으면 뚫림(0이 표현이 안 됨.)

  1. value 뿐 아니라 모든 property는 바인딩 할 수 있다.

예를 들어,
캘린더 컴포넌트의 visible 속성에 ds_emp 테이블의 MARRIED 컬럼과 바인딩을 걸었음.
이제, MARRIED가 true 일 때만 보이고 , false일 때는 보이지 않음.

2. 다중바인딩

데이터셋의 여러행을 컴포넌트와 연결하여 데이터를 목록형태로 표시
주로 grid, listbox, combo 등에서 사용됨

목록형 컴포넌트 바인딩(listbox, combo)

목록형 컴포넌트는 값을 바인딩 하기 전에 목록을 먼저 만들어야 한다.
목록을 만드는 것을 InnerDataset을 만든다고 한다.

  1. InnerDataset을 연결
    ds_dept dataset을 드래그해서 Department에 해당하는 콤보상자에 드롭
    Bind InnerDataset 클릭

  1. 원본데이터와 바인딩
    ds_emp 라는 기준 Dataset을 가지고 콤보상자에 드래그 & 드롭
    Bind with 클릭

프로퍼티로 바인딩 직접 설정

innerdataset이라는 프로퍼티에서 우측에 ... 버튼을 클릭

왼쪽 하단에 add 버튼을 눌러서 데이터 추가

그리고 radio 컴포넌트의 프로퍼티 중 columncount를 3으로 바꿔줌
(raio 선택지 3개인데 이전에 0으로 되어있어서 겹쳐보였음)
(direction 프로퍼티로 방향 설정할 수도 있음)

Grid 바인딩

Dataset 클릭+드레그해서 Grid 컴포넌트에 올림
Dataset에 있는 컬럼 정보가 바인딩되어 Grid로 표현됨


바인딩된 데이터셋 확인하는 단축키

  • ctrl + B : Bind Item 화면 열림
    위 단축키를 누르면, 오른쪽 하단에 Dataset모양 클릭
profile
개발새발

0개의 댓글