[]
        
(Showing Draft Content)

관계가 있는 View

View는 관련 테이블의 필드를 포함할 수 있습니다.

이를 통해 테이블을 수동으로 병합하지 않고도 조인된 데이터를 표시할 수 있습니다.

테이블 간 접근을 위해서는 관계가 정의되어 있어야 합니다.

사전 조건: 관계 정의

View에서 관련 필드를 사용하기 전에 테이블 간 관계를 정의해야 합니다.

예제:

dataManager.addRelationship(
    orderTable,          // 원본 테이블
    "CustomerId",        // 원본 키
    "customer",          // 탐색 속성 이름
    customerTable,       // 대상 테이블
    "Id",                // 대상 키
    "orders"             // 역방향 탐색 이름
);

관계를 정의하면:

  • orderTablecustomer에 접근할 수 있습니다.

  • customerTableorders에 접근할 수 있습니다.

View에서 관련 필드 사용

관계가 생성되면 점 표기법을 사용하여 관련 필드를 참조할 수 있습니다.

예제:

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 바인딩

View를 정의한 후:

orderView.fetch().then(function () {
    tableSheet.setDataView(orderView);
});

시트는 View에서 정의된 조인 구조를 렌더링합니다.

주요 특징

  • View는 항상 하나의 호스트 테이블에 속합니다.

  • 관련 필드는 정의된 관계를 통해 접근합니다.

  • 관련 필드 참조에는 점 표기법을 사용합니다.

  • 수동 조인 로직이 필요하지 않습니다.

  • 데이터는 테이블 수준에서 정규화된 상태로 유지됩니다.