React 트리 그리드 셀 병합
Ignite UI for React 트리 그리드는 동일한 값을 가진 두 개 이상의 인접한 셀을 하나의 더 큰 셀로 결합하는 셀 병합 기능을 제공합니다. 병합은 열 내에서 세로로 적용되며 중복 값을 줄여 가독성을 향상시키는 데 도움이 됩니다. 이 기능은 기본적으로 일치하는 데이터 값에 의해 또는 사용자 지정 조건을 적용하여 셀을 병합하도록 구성할 수 있습니다.
React Tree Grid Cell Merging Example
Enabling and Using Cell Merging
그리드의 셀 병합은 다음 두 가지 수준에서 제어됩니다.
- 그리드 수준 병합 모드 – 병합이 적용되는 시기를 결정합니다.
- 열 수준 병합 토글 – 셀을 병합할 수 있는 열을 결정합니다.
Grid Merge Mode
격자는 열거실cellMergeMode에서 값을 받아들이는 속성을 드러냅GridCellMergeMode 니다:
always- 정렬 상태와 상관없이 병합 조건을 충족하는 인접 셀들을 병합합니다.onSort- 열이 정렬될 때만 인접한 셀을 병합합니다 (기본값).
<IgrTreeGrid data={data} cellMergeMode={cellMergeMode} >
...
</IgrTreeGrid>
const cellMergeMode: GridCellMergeMode = 'always';
Column Merge Toggle
열 수준에서는 속성과merge 병합을 활성화하거나 비활성화할 수 있습니다.
<IgrColumn field="OrderID" merge={true}></IgrColumn>
<IgrColumn field="ShipperName" merge={false}></IgrColumn>
위의 예에서:
- The OrderID column will merge adjacent duplicate values.
- ShipperName 열은 병합되지 않고 정상적으로 렌더링됩니다.
Combined Example
<IgrTreeGrid data={data} cellMergeMode={cellMergeMode} autoGenerate={false}>
<IgrColumn field="OrderID" header="Order ID" merge={true}></IgrColumn>
<IgrColumn field="ShipperName" header="Shipper Name" merge={true}></IgrColumn>
<IgrColumn field="Salesperson" header="Salesperson"></IgrColumn>
</IgrTreeGrid>
const cellMergeMode: GridCellMergeMode = 'onSort';
여기서 표는 열이 정렬될 때만 병합되도록 설정되며 범주 및 제품 열이 모두 병합되도록 구성됩니다.
Custom Merge Conditions
내장된 모드always와onSort 모드 외에도, 그리드는 속성을 통해mergeStrategy 셀을 병합하는 데 대한 맞춤 조건을 정의할 수 있게 해줍니다. 이 전략은 셀 비교 방식과 병합된 범위 계산 방식을 모두 제어합니다.
Merge Strategy Class
커스텀 머지 전략은 다음IgrGridMergeStrategy 클래스를 구현해야 합니다:
merge- 병합된 셀이 어떻게 생성되는지를 정의합니다.comparer- 인접한 두 레코드를 병합할지 결정하는 조건을 정의합니다.
인터페이스IgrTreeGrid는 다음과 같은 두 가지 내장 전략IGridMergeStrategy을 제공합니다:IgrDefaultTreeGridMergeStrategy 그리고IgrByLevelTreeGridMergeStrategyIgrDefaultTreeGridMergeStrategy 계층적 수준에 관계없이 동일한 값을 가진 모든 셀을 병합합니다. 반면,IgrByLevelTreeGridMergeStrategy 셀은 값이 같고 같은 수준에 있을 때만 병합하므로, 병합에 필요한 조건이 레벨입니다.
Extending the Default Strategy
동작의 일부(예: 비교 로직)만 커스터마이징하고 싶다면, 내장 전략IgrDefaultTreeGridMergeStrategyIgrByLevelTreeGridMergeStrategy 중 하나를 확장하고 관련 메서드를 덮어쓸 수 있습니다.
export class MyCustomStrategy extends IgrDefaultTreeGridMergeStrategy {
/* Merge only cells within their respective projects */
public override comparer(prevRecord: any, record: any, field: string): boolean {
const a = prevRecord[field];
const b = record[field];
const projA = prevRecord['ProjectName'];
const projB = record['ProjectName'];
return a === b && projA === projB;
}
}
Applying a Custom Strategy
정의가 끝나면, 다음 속성을 통해mergeStrategy 그리드에 전략을 할당합니다:
<IgrTreeGrid data={data} mergeStrategy={customStrategy}>
<IgrColumn field="ActionID" merge={true}></IgrColumn>
<IgrColumn field="ProjectName" merge={true}></IgrColumn>
</IgrTreeGrid>
Feature Integration
병합된 셀의 특정 동작으로 인해 그리드의 다른 기능 중 일부와 정확히 어떻게 연결되는지 주목해야 합니다.
- Excel 내보내기: 병합된 셀은 Excel로 내보낼 때 병합된 상태로 유지됩니다.
- 열 고정: 열이 고정될 때 셀은 병합된 상태로 유지되고 고정된 영역에 표시됩니다.
- 행 고정: 셀은 포함된 영역 내에서만 병합됩니다(즉, 고정된 행의 셀은 고정된 다른 행의 셀과만 병합되는 반면, 고정되지 않은 행의 셀은 고정되지 않은 행의 셀과만 병합됩니다.
- 업데이트/편집: 활성화하면 병합 시퀀스가 중단되므로 단일 셀만 편집 모드에 있습니다.
- 행 선택: 선택한 행이 병합된 셀과 교차하는 경우 관련된 모든 병합된 셀을 선택의 일부로 표시해야 합니다.
- 탐색/활성화: 셀이 활성화되면 동일한 행의 병합된 모든 셀이 단일 셀이 됩니다. 여기에는 키보드 탐색을 통한 활성화도 포함됩니다.
[!NOTE] If a merged cell is clicked, the closest cell from the merge sequence will become active.
API References
Additional Resources
우리 커뮤니티는 활동적이며 항상 새로운 아이디어를 환영합니다.