SMART datagrid v1.4 > Concepts
기본적으로 데이터셀은 셀이 참조하는 데이터행의 값들 중 셀 컬럼에 연결된 데이터필드의 값을 표시한다. 하지만, 실제 값 보다 의미있고 이해하기 쉬운 값을 대신 표시하는 것이 필요한 경우가 적지 않다. 컬럼의 lookupDisplay 속성을 true로 지정하고, 몇 가지 관련된 속성들을 설정해서 실제값과 연관된 다른 값이나 다른 필드의 값을 데이터셀에 표시할 수 있다.
데이터컬럼의 lookupValues에 하나 이상의 값이 설정되고, lookupLabels에 lookupValues 만큼의 값들이 설정되면, 데이터셀의 값이 lookupValues 목록 중에 포함된 경우, 그 위치에 해당하는 lookupLabels의 값을 표시한다.
lookupValues에 해당하는 값이 없거나, lookupLabels의 항목 개수가 해당 위치 보다 작으면 데이터셀의 본래 값이 표시된다.
DataColumn.labelField를 설정해서 데이터셀의 본래 값 대신 labelField로 설정된 다른 필드의 값을 셀에 표시하는 데 사용할 수 있다. labelField가 잘못된 필드를 지정한 경우 무시된다.
labelField는 DataSet 수준에서 값을 가져오는 것이므로, 하나의 데이터셋에 여러 그리드를 연결하고, 각 그리드의 lookup 요구 사항이 다르다면 여러 개의 labelField가 필요할 수도 있다. 또, labelField는 서버로 부터 로드한 데이터에 포함된 것이 아니라 lookup 요구사항을 위해 추가된 필드일 수 있다.
데이터행이 수정되거나 추가되는 경우 label field의 값을 적절히 변경하는 것이 필요하다. 편집 중에 즉시 동기화가 필요하다면 GridBase.onEditCellUpdated 이벤트를 사용할 수 있고, 행 편집 완료 후에 동기화 하는 정도라면 GridDataSet.onRowUpdated, GridDataSet.onRowInserted 등의 이벤트 핸들러 내에서 label field의 값을 변경하면 된다.
룩업소스는 데이터셀에서 룩업할 값들을 데이테셋이 아닌 자신의 공간에 생성하고 관리하는 객체다. LookupSource 클래스는 룩업소스가 구현해야 할 메쏘드들을 정의한 추상 클래스이고, 현재 구현된 룩업소스는 LookupTree가 있다. LookupSource 객체는 LookupSource.lookup 메쏘드를 통해 하나 이상의 키 값에 대한 룩업 값을 반환한다. 또, fill 이나 add 메쏘드를 호출해서 적절한 시점에 룩업 값들을 추가하거나 재설정할 수 있다.
자세한 설명은 LookupTree 도움말 토픽과 LookupData 예제를 참조한다.