SMART datagrid v1.4 > Concepts

[ grids ver.1.3.5]   Back  Forward

Concepts.Data Field Overview

1. Data Type

DataSet에 저장하는 값들은 DataField에 설정된 자료형과 범위에 맞춰 저장된다. DataField의 자료형은 ValueType 상수에 정의된 것들로, 각각 Javascript의 기본형인 String, Number, Boolean에 대응한다. 날짜 처리를 위한 값은 Javascript Date 객체로 저장한다. 또, 모든 자료형에는 undefined 값을 저장할 수 있다. 

특히 DATETIME 필드인 경우 GridDataSet.getValue와 같은 메소드로 값을 요청할 때, DataSet에 저장되어 있는 Date 객체를 그대로 전달한다. 값을 가져가는 쪽에서 리턴된 Date 객체를 직접 변경해서는 절대 안된다. 또, 데이터셋 api 호출 시 매개변수로 전달된 Date 객체도 변경해서는 안된다. 즉, 그리드 모듈 내에서 Date 객체는 읽기만 가능한 값으로 간주해야 한다. 

데이터필드에 대한 보다 자세한 내용은 데이터필드 도움말 토픽을 참조한다. 

2. Object Field

SMART datagrid 1.3.5 버전 이 후 부터는 OBJECT 형 데이터필드를 생성할 수 있다. Object 필드에는 JSON 객체를 바로 저장할 수 있다. 하지만, 데이터셋은 저장되는 객체의 구조에는 관여하지 않고 객체 자체의 변경 여부만 확인하고 관련 이벤트 등을 발생시킨다. 

Object 필드에 연결된 그리드 데이터셀에는 기본적으로 해당 필드에 지정된 keyPathkeyCallback 속성에서 리턴되는 값이 표시되고, 이렇게 리턴되는 값이 기본적으로 컬럼 정렬 및 엑셀 내보내기 등에서도 사용된다. 

또, 이런 데이터셀에서 기본적으로 사용자가 직접 값을 수정할 수 없고, 별도의 입력 방식을 제공해서 GridDataSet.setValuesetValueEx 등으로 저장해야 한다. 이 때, 데이터셋에 저장되는 JSON 객체의 변경은 객체 수준에서만 확인된다. 즉, 데이터셋에 저장된 객체를 가져와서(getValue) 그 속성들을 변경한 후, 다시 저장(setValue)하더라도 기본적으로 변경 이벤트가 발생하지 않는다. 객체 자체의 변경이 있을 때만 변경 이벤트들이 발생한다. 

데이터 저장 시 JSON 객체가 아닌 경우 JSON.parse()를 호출하는 데, 문제가 발생하는 경우 입력 값이 문자열이면 예외를 발생 시킨다. 

클립보드로 값을 복사할 때 해당 컬럼에 copyCallback이 설정되지 않으면 JSON.stringify()를 호출해서 문자열로 변환한다. 또, 붙여넣기를 위해서는 반드시 pasteCallback이 설정되어야 한다. 

3. 형변환 저장

GridDataSet.appendRowGridDataSet.setValue 등으로 값을 저장할 때 필드의 자료형과 다르게 문자열 등을 전달할 수 있는데, 이 때 형변환이 필요하다. 형 변환 저장에 대해서는 DataField.datetimeFormat, booleanFormat 도움말 토픽을 참조한다. 

4. 표시 형식

DataSet에 값을 입출력하는 것과 유사하게, 그리드 데이터셀에 값을 표시할 때 사용자가 쉽게 읽을 수 있도록 하거나, 실제 값 대신 의미 있는 다른 값으로 대신 표시할 필요가 있을 수 있다. 이 때, 자료형별로 GridStyles.numberFormat, booleanFormat, datetimeFormat 속성들을 사용한다. 자세한 형식 설명은 각각의 도움말 토픽을 참조한다. 

5. 입력 형식

표시 형식과 마찬가지로 셀 편집기를 통해 사용자로 부터 값을 입력받을 때, 입력된 텍스트를 각 필드의 자료형으로 변환하는 형식을 CellEditor.booleanFormatdatetimeFormat으로 지정할 수 있다. 

See Also
DataField
데이터셋 개요
Examples
Number Value
Boolean Value
Datetime Value
Object Field