[]
View는 관련 테이블의 필드를 포함할 수 있습니다.
이를 통해 테이블을 수동으로 병합하지 않고도 조인된 데이터를 표시할 수 있습니다.
테이블 간 접근을 위해서는 관계가 정의되어 있어야 합니다.
View에서 관련 필드를 사용하기 전에 테이블 간 관계를 정의해야 합니다.
예제:
dataManager.addRelationship(
orderTable, // 원본 테이블
"CustomerId", // 원본 키
"customer", // 탐색 속성 이름
customerTable, // 대상 테이블
"Id", // 대상 키
"orders" // 역방향 탐색 이름
);관계를 정의하면:
orderTable은 customer에 접근할 수 있습니다.
customerTable은 orders에 접근할 수 있습니다.
관계가 생성되면 점 표기법을 사용하여 관련 필드를 참조할 수 있습니다.
예제:
var orderView = orderTable.addView("orderView", [
{ value: "orderId", width: 100 },
{ value: "orderDate", width: 150 },
{ value: "customer.companyName", caption: "Company", width: 200 },
{ value: "customer.contactName", caption: "Contact", width: 150 }
]);이 View는 다음 테이블의 필드를 표시합니다.
호스트 테이블(orderId, orderDate)
관련 테이블(customer.companyName, customer.contactName)
데이터는 복제되지 않습니다.
View가 관련 값을 동적으로 해석합니다.
관련 필드는 템플릿 또는 수식에서도 사용할 수 있습니다.
예제:
var addressStyle = {
formatter: 'The detailed ship address: {{=CONCAT(@.shipAddress, ", ", @.shipCity)}}'
};
var orderView = orderTable.addView("orderView", [
{ value: "orderId", width: 100 },
{ value: "=[@]", caption: "Address", style: addressStyle, width: "3*" }
]);서식 지정자는 다음을 참조할 수 있습니다.
호스트 테이블 필드
관련 테이블 필드
@를 통한 전체 행 컨텍스트
별표 크기 조정은 관련 필드에서도 동일하게 동작합니다.
var orderView = orderTable.addView("orderView", [
{ value: "customer.companyName", width: "2*" },
{ value: "customer.contactName", width: "*" }
]);열 레이아웃 동작은 데이터가 호스트 테이블에서 오는지, 관련 테이블에서 오는지와 관계없이 동일합니다.
View를 정의한 후:
orderView.fetch().then(function () {
tableSheet.setDataView(orderView);
});시트는 View에서 정의된 조인 구조를 렌더링합니다.
View는 항상 하나의 호스트 테이블에 속합니다.
관련 필드는 정의된 관계를 통해 접근합니다.
관련 필드 참조에는 점 표기법을 사용합니다.
수동 조인 로직이 필요하지 않습니다.
데이터는 테이블 수준에서 정규화된 상태로 유지됩니다.