[]
템플릿 셀에서 정렬 옵션을 사용하면 오름차순, 내림차순 또는 사용자 정의 순서 등 원하는 순서로 데이터를 정렬할 수 있습니다. 템플릿 시트(TemplateSheet)에서 정렬 옵션을 구성하려면, 먼저 데이터 매니저에 테이블 소스를 정의해야 합니다. 그 후, 템플릿 셀에서 dataColumn
옵션에 tableName
과 columnName
을 설정하고, 원하는 sortOptions
를 지정합니다.
참고:
정렬은 리포트 데이터가 확장되기 전에 수행되므로, 리포트 데이터 생성 후 수식 계산 결과를 가져올 수 없습니다.
sortByCell
및sortByFormula
방식을 사용하려면 정렬 값이 항상 문자열이므로"="
기호로 시작해야 합니다.
sortByCell
방식은=A1
형식만 지원하며, R1C1 형식, 절대 참조 또는 사용자 지정 이름은 지원하지 않습니다.
SpreadJS에서는 다양한 방식으로 데이터를 정렬할 수 있으며, 아래에서 각 방법을 설명합니다.
사용자는 현재 cellNode
가 어떤 데이터 열을 기준으로 정렬될지 지정할 수 있으며, 이 경우 현재 노드 및 자식 노드가 해당 부모 그룹 내에서 재정렬됩니다. 지정된 열은 현재 노드가 바인딩된 테이블의 열이어야 합니다.
다음 코드 샘플은 그룹/리스트 내에서 정렬하는 방법, 여러 개의 정렬 규칙을 사용하는 방법, 그리고 정렬 규칙이 없는 경우를 보여줍니다.
// 그룹 내 정렬 예시.
// "shipCounty" 열 기준 오름차순 정렬
templateSheet.setTemplateCell(2, 0, {
type: "Group",
binding: `Orders[shipCountry]`,
sortOptions: [
{
asc: "shipCountry"
}
]
});
// 리스트 내 정렬 예시.
// "customerId" 열 기준 내림차순 정렬
templateSheet.setTemplateCell(2, 1, {
type: "List",
binding: `Orders[customerId]`,
sortOptions: [
{
dsc: "customerId"
}
]
});
// 다중 정렬 규칙 예시.
// "shipCounty" > "sales" 순서로 정렬
templateSheet.setTemplateCell(0, 0, {
type: "List",
binding: `Orders[shipCountry]`,
sortOptions: [
{
asc: "shipCountry"
},
{
asc: "sales"
}
]
});
// 기본값 (정렬 없음)
templateSheet.setTemplateCell(2, 2, {
type: "List",
binding: `Orders[freight]`
});
사용자는 현재 cellNode
가 어떤 셀 값을 기준으로 정렬될지를 지정할 수 있습니다. 이때 기준 셀 값은 해당 cellNode
의 자식이어야 합니다.
참고:
기준 셀에 여러 값이 있는 경우, 첫 번째 값만 사용됩니다.
기준 셀로 현재
cellNode
를 지정하면 자기 자신의 값을 기준으로 정렬됩니다.
다음 코드 샘플은 셀 값을 기준으로 데이터를 정렬하는 방법을 보여줍니다.
// B3 셀 값을 기준으로 정렬
templateSheet.setTemplateCell(2, 0, {
type: "Group",
binding: `Products[ProductName]`,
sortOptions: [
{
asc: "=B3"
}
]
});
templateSheet.setTemplateCell(2, 1, {
type: "List",
binding: `Products[UnitsInStock]`,
});
수식을 정렬 기준으로 사용할 수 있으며, 이때 수식은 반드시 "="
기호로 시작해야 합니다.
다음 코드 샘플은 수식 값을 기준으로 데이터를 정렬하는 방법을 보여줍니다.
// "=YEAR([@OrderDate])&\"/\"&MONTH([@OrderDate])" 수식 기준으로 정렬
templateSheet.setTemplateCell(3, 0, {
type: "Group",
binding: `Orders[orderDate]`,
"formula": "=YEAR([@OrderDate])&\"/\"&MONTH([@OrderDate])", // Formula
"sortOptions": [
{
"desc": "=YEAR([@OrderDate])"
},
{
"asc": "=MONTH([@OrderDate])",
// Custom list.
"list": [
4,
5,
6,
7,
8,
9,
10,
11,
12,
1,
2,
3
]
}
]
});
templateSheet.setTemplateCell(3, 1, {
type: "List",
binding: `Orders[freight]`,
});
각 정렬 옵션에 정해진 값 배열을 사용하면, 해당 목록 순서대로 정렬되며, 이후 나머지는 오름차순 또는 내림차순으로 정렬됩니다.
다음 코드 샘플은 목록 값을 기준으로 데이터를 정렬하는 방법을 보여줍니다.
// ["Tofu", "Thin Bread", "Ikura Caviar"] 순서로 "Product" 정렬
// 나머지 항목은 오름차순
templateSheet.setTemplateCell(3, 0, {
type: "List",
binding: `Products[Id]`,
sortOptions: [
{
asc: "=B4",
list: ["Tofu", "Thin Bread", "Ikura Caviar"]
},
]
});
templateSheet.setTemplateCell(3, 1, {
type: "Group",
binding: `Products[ProductName]`,
});
templateSheet.setTemplateCell(3, 2, {
type: "List",
binding: `Products[UnitPrice]`,
});
디자이너에서도 리포트 셀(Report Cell) 속성 패널의 정렬(Sort) 옵션을 사용하여 데이터를 정렬할 수 있습니다.
추가(Add) 버튼을 클릭하여 정렬 규칙을 추가하고, 정렬 순서를 오름차순/내림차순으로 변경하거나, 열/셀 기준 정렬을 설정하고, 사용자 지정 목록(Custom List) 옵션을 통해 사용자 정의 정렬도 가능합니다.
또한, 위/아래/삭제(Up/Down/Remove) 버튼을 통해 정렬 규칙의 순서를 조정하거나 삭제할 수도 있습니다.