[Nexacro N] 데이터바인딩 개념과 기초

Nexacro N 데이터바인딩의 핵심 원리를 설명하고, dataset·binddataset·value·bindcolumn 속성을 컴포넌트 유형별로 정리합니다.

· 5 min read · PALDYN Team

지난 글에서 Dataset의 CSV 처리를 살펴봤습니다. Nexacro N 개발의 핵심 메커니즘 중 하나가 데이터바인딩입니다. Dataset에 데이터를 채우면 바인딩된 컴포넌트가 자동으로 화면을 갱신하고, 사용자가 컴포넌트에서 값을 수정하면 Dataset에 자동으로 반영됩니다. 이 자동 동기화 덕분에 DOM 조작이나 값 복사 코드를 따로 작성하지 않아도 됩니다.

데이터바인딩이란

Dataset의 currentrow 값이 변경되거나 Dataset 내 데이터가 바뀌면, 해당 Dataset에 바인딩된 모든 컴포넌트가 즉시 새 값으로 표시됩니다. 반대로 Edit 컴포넌트에서 사용자가 텍스트를 수정하면 Dataset의 해당 컬럼 값도 실시간으로 변경됩니다.

데이터바인딩 개념도

이 양방향 동기화 구조 덕분에 Nexacro N 화면은 Dataset이 단일 진실 공급원(Single Source of Truth)이 됩니다. 서버에서 데이터를 받아 Dataset에 채우면 화면 전체가 갱신되는 방식입니다.

핵심 속성 4가지

속성설명
dataset연결할 Dataset의 ID
value표시할 컬럼명 (currentrow 기준 단건)
binddataset전체 행을 표시하는 컴포넌트(Grid·List·Select)용
bindcolumnGrid 셀이 참조할 컬럼명

datasetvalue는 한 행의 특정 컬럼을 컴포넌트에 연결할 때 씁니다. binddataset은 Dataset의 전체 행을 순회해 표시하는 Grid·List·Select 컴포넌트에 사용합니다.

Edit 컴포넌트에 바인딩

<Edit id="edtName"
  dataset="dsMain"
  value="NAME"
  left="20" top="20" width="200" height="30"/>

dataset에 Dataset ID, value에 컬럼명을 지정합니다. dsMain.currentrow가 가리키는 행의 NAME 컬럼 값이 Edit에 표시됩니다. 사용자가 값을 수정하면 Dataset의 해당 컬럼도 자동으로 변경됩니다.

Grid 컴포넌트에 바인딩

Grid는 binddataset으로 전체 행을 표시하고, 각 셀의 bindcolumn으로 컬럼을 지정합니다.

<Grid id="grdMain"
  binddataset="dsMain"
  left="20" top="60" width="600" height="300"/>

Grid Format 에디터에서 각 셀의 bindcolumnCODE, NAME, AMT 등으로 설정합니다. binddataset이 지정된 Grid는 Dataset의 모든 행을 자동으로 렌더링합니다.

컴포넌트별 바인딩 속성 정리

Combo 바인딩 — 코드·표시 분리

Combo는 내부 코드 Dataset(binddataset)과 현재 선택값을 저장하는 Dataset(dataset)을 분리해서 씁니다.

<Combo id="cboStatus"
  binddataset="dsCode"
  codecolumn="CODE"
  datacolumn="NAME"
  dataset="dsMain"
  value="STATUS"
  left="20" top="60" width="150" height="30"/>

binddataset+codecolumn+datacolumn이 드롭다운 목록을 구성하고, dataset+value가 현재 선택된 코드를 dsMain.STATUS 컬럼에 저장합니다.

스크립트로 Dataset 연결 변경

폼 로드 시 스크립트로 바인딩 속성을 지정할 수도 있습니다.

function fn_onload_formload(obj, e) {
    // 스크립트로 바인딩 속성 설정
    this.edtName.set_dataset("dsMain");
    this.edtName.set_value("NAME");
    this.grdMain.set_binddataset("dsMain");
}

Designer에서 바인딩을 설정하는 것이 일반적이지만, 런타임에 Dataset을 동적으로 교체해야 할 때 이 방식을 사용합니다.

currentrow가 바인딩에 미치는 영향

Edit·Combo·Static 컴포넌트는 dataset.currentrow가 가리키는 단 하나의 행을 보여줍니다. currentrow-1(선택 없음)이면 컴포넌트 값이 비어 있습니다. Grid에서 행을 클릭하면 dsMain.currentrow가 자동으로 해당 행 번호로 변경되고, 같은 Dataset에 바인딩된 Edit들도 즉시 새 값으로 업데이트됩니다. 이것이 마스터-디테일 UI의 기본 동작 원리입니다.


지난 글: [Nexacro N] Dataset CSV 데이터 다루기

다음 글: [Nexacro N] 바인딩 방향 — 단방향·양방향 제어


읽어주셔서 감사합니다. 😊