SMART datagrid v1.4 > Concepts

Back  Forward

Concepts.Data Lookup Overview

기본적으로 데이터셀은 셀이 참조하는 데이터행의 값들 중 셀 컬럼에 연결된 데이터필드의 값을 표시한다. 하지만, 실제 값 보다 의미있고 이해하기 쉬운 값을 대신 표시하는 것이 필요한 경우가 적지 않다. 컬럼의 lookupDisplay 속성을 true로 지정하고, 몇 가지 관련된 속성들을 설정해서 실제값과 연관된 다른 값이나 다른 필드의 값을 데이터셀에 표시할 수 있다. 


1. lookupValues, lookupLabels

데이터컬럼lookupValues에 하나 이상의 값이 설정되고, lookupLabels에 lookupValues 만큼의 값들이 설정되면, 데이터셀의 값이 lookupValues 목록 중에 포함된 경우, 그 위치에 해당하는 lookupLabels의 값을 표시한다. 

lookupValues에 해당하는 값이 없거나, lookupLabels의 항목 개수가 해당 위치 보다 작으면 데이터셀의 본래 값이 표시된다. 


2. labelField

DataColumn.labelField를 설정해서 데이터셀의 본래 값 대신 labelField로 설정된 다른 필드의 값을 셀에 표시하는 데 사용할 수 있다. labelField가 잘못된 필드를 지정한 경우 무시된다. 

labelField는 DataSet 수준에서 값을 가져오는 것이므로, 하나의 데이터셋에 여러 그리드를 연결하고, 각 그리드의 lookup 요구 사항이 다르다면 여러 개의 labelField가 필요할 수도 있다. 또, labelField는 서버로 부터 로드한 데이터에 포함된 것이 아니라 lookup 요구사항을 위해 추가된 필드일 수 있다. 

데이터행이 수정되거나 추가되는 경우 label field의 값을 적절히 변경하는 것이 필요하다. 편집 중에 즉시 동기화가 필요하다면 GridBase.onEditCellUpdated 이벤트를 사용할 수 있고, 행 편집 완료 후에 동기화 하는 정도라면 GridDataSet.onRowUpdated, GridDataSet.onRowInserted 등의 이벤트 핸들러 내에서 label field의 값을 변경하면 된다. 


2. lookupSource

룩업소스는 데이터셀에서 룩업할 값들을 데이테셋이 아닌 자신의 공간에 생성하고 관리하는 객체다. LookupSource 클래스는 룩업소스가 구현해야 할 메쏘드들을 정의한 추상 클래스이고, 현재 구현된 룩업소스는 LookupTree가 있다. LookupSource 객체는 LookupSource.lookup 메쏘드를 통해 하나 이상의 키 값에 대한 룩업 값을 반환한다. 또, fill 이나 add 메쏘드를 호출해서 적절한 시점에 룩업 값들을 추가하거나 재설정할 수 있다. 

자세한 설명은 LookupTree 도움말 토픽과 LookupData 예제를 참조한다. 


Note
See Also
DataColumn.lookupDisplay
DataColumn.lookupValues
DataColumn.lookupLabels
DataColumn.labelField
DataColumn.lookupSource
LookupSource
DropDownCellEditor
Examples
Data 룩업