[]
Lookup 열은 데이터 소스 스키마에서 "lookup"
으로 표시할 수 있는 열이며, 테이블 시트에서 콤보박스 셀 타입 또는 다중 열 드롭다운 리스트로 표시할 수 있습니다. Lookup 열을 사용하면 테이블 시트 뷰에서 고정된 lookup 배열이나 관련된 행 집합에서 열 값을 효율적으로 선택할 수 있습니다. 이 Lookup 열 개념은 테이블 시트의 교차 열 기능에서 도입되었습니다.
테이블 시트에서는 아래와 같은 방법으로 열을 "lookup"
으로 표시할 수 있습니다:
배열로 설정
열의 lookup이 데이터 소스 스키마에서 배열일 경우, 해당 열에는 자동으로 콤보박스 셀 타입이 적용되며, lookup 배열의 모든 항목이 콤보박스에 표시됩니다.
다음 코드는 테이블 시트에서 lookup 배열을 설정하는 방법을 보여줍니다. 예를 들어, Type 열을 lookup으로 표시하고 배열 값을 설정할 수 있습니다.
var workItemTable = dataManager.addTable("WorkItems", {
data: [
{
"ID": 1,
"Date": "9/12/2020",
"Description": "Know your numbers",
"TotalPoints": 10,
"Type": "Homework"
},
//...
],
schema: {
columns: {
Date: { dataType: "date" },
// set lookup column as an array
Type: { lookup: ["Homework", "Quiz", "Exam"] }
}
}
});
관계 이름으로 설정
두 테이블 간의 관계를 설정할 때, 열의 lookup을 관계 이름으로 지정할 수 있습니다. 이 경우 셀 버튼과 다중 열 드롭다운이 자동으로 적용되며, 드롭다운에는 관련 테이블의 기본 열이 표시됩니다.
다음 예제에서는 Students 테이블과 Grades 테이블 간의 관계를 생성하고, Grades 테이블의 Student ID
열을 lookup으로 지정합니다. 그러면 Students 테이블의 데이터가 드롭다운에 표시됩니다.
var studentTable = dataManager.addTable("Students", {
data: [
{
"ID": 1,
"Name": "Ellen Robinson"
},
//...
]
});
var gradeTable = dataManager.addTable("Grades", {
data: [
{
"StudentID": 1,
"WorkItemID": 1,
"Grade": 4
},
//...
],
schema: {
columns: {
StudentID: {
lookup: 'student'
}
}
}
});
dataManager.addRelationship(gradeTable, "StudentID", "student", studentTable, "ID", "grades");
옵션으로 설정
lookup을 관계 이름과 열 옵션을 포함한 객체로 지정할 수 있습니다. 이 경우 셀 버튼과 다중 열 드롭다운이 자동으로 적용되며, 드롭다운에는 지정한 열이 표시됩니다. 옵션에서 허용되는 열 속성은 value
, width
, visible
, caption
입니다.
다음 예제에서는 WorkItems 테이블과 Grades 테이블 간의 관계를 생성하고, Grades 테이블의 WorkItem ID
열을 lookup 옵션으로 지정하여 드롭다운에 표시할 열을 정의합니다.
var workItemTable = dataManager.addTable("WorkItems", {
data: [
{
"ID": 1,
"Date": "9/12/2020",
"Description": "Know your numbers",
"TotalPoints": 10,
"Type": "Homework"
},
//...
]
});
var gradeTable = dataManager.addTable("Grades", {
data: [
{
"StudentID": 1,
"WorkItemID": 1,
"Grade": 4
},
//...
],
schema: {
columns: {
WorkItemID: {
// lookup: { name: 'workItem', columns: ["ID", "Description", "TotalPoints", "Type"]}
lookup: {
name: 'workItem', columns: [
{ value: "ID" },
{ value: "Description", width: 150 },
{ value: "TotalPoints", width: 100 },
{ value: "Type", width: 150, caption: "WorkItem Type" }
]
}
}
}
}
});
dataManager.addRelationship(gradeTable, "WorkItemID", "workItem", workItemTable, "ID", "grades");
SpreadJS 디자이너에서는 데이터 원본(DataSource) 탭을 통해 테이블시트에서 Lookup 열을 설정할 수 있습니다. 이때 스키마(Schema) 섹션의 열(Columns) 탭에서 조회(Lookup) 옵션을 사용할 수 있습니다.
기본적으로 다음 방법 중 하나를 통해 테이블 시트에 '정적 배열'을 Lookup으로 설정할 수 있습니다:
Lookup 편집기에서 배열 문자열을 직접 입력 (예: "123, 628, 325"
)
Lookup 드롭다운 목록에서 배열 문자열 선택
배열 lookup을 설정하면, 테이블 시트 열의 콤보박스 드롭다운에 배열 항목이 표시됩니다.
예: shipVia
열
테이블 간 관계가 있는 테이블 시트의 경우, Lookup을 관계 이름으로 설정할 수도 있습니다. 방법은 다음과 같습니다:
조회(Lookup) 편집기에서 관계 이름을 직접 입력 (예: "Orders_customId"
)
조회(Lookup) 드롭다운 목록에서 관계 이름 선택
관계 이름을 lookup으로 설정하면, 해당 관계 이름에 연결된 열들이 스키마(Schema) 내 조회 열(Lookup columns) 옵션에 자동 표시됩니다. 표시할 열들을 선택하면, 테이블 시트의 다중 열 드롭다운에 표시됩니다.
예를 들어, address
열에 Customer_phone
관계 이름을 Lookup으로 추가하면, 버튼 셀로 표시되고 클릭 시 선택한 열이 드롭다운에 표시됩니다.