Angular Tree Grid Row Pinning

    하나 이상의 행을 Angular UI 그리드의 위쪽 또는 아래쪽에 고정할 수 있습니다. Ignite UI for Angular의 행 고정을 사용하면 최종 사용자가 특정 순서로 행을 고정하여 트리 그리드를 세로로 스크롤할 때도 항상 볼 수 있는 특수 영역에 행을 복제할 수 있습니다. Material UI Grid에는 행 고정 UI가 내장되어 있으며, 이는 Tree Grid의 컨텍스트에서 구성 요소를 초기화 igxActionStrip 하여 활성화됩니다. 또한 Row Pinning API를 통해 사용자 지정 UI를 정의하고 행의 고정 상태를 변경할 수 있습니다.

    Angular 트리 그리드 행 고정 예제

    EXAMPLE
    TS
    HTML
    SCSS

    이 샘플이 마음에 드시나요? 전체 Ignite UI for Angular 툴킷에 액세스하고 몇 분 안에 나만의 앱을 구축해 보세요. 무료로 다운로드하세요.

    행 고정 UI

    내장 행 고정 UI는 GridPinningActions 구성 요소와 함께 igxActionStrip 구성 요소를 추가하여 활성화됩니다. 행을 마우스로 가리키면 작업 스트립이 자동으로 표시되며 표시된 행의 상태에 따라 고정 또는 고정 해제 버튼 아이콘이 표시됩니다. 고정된 행의 복사본을 보기로 스크롤할 수 있는 추가 작업도 고정된 각 행에 대해 표시됩니다.

    <igx-tree-grid [data]="data" [autoGenerate]="false">
        <igx-column *ngFor="let c of columns" [field]="c.field" [header]="c.field">
        </igx-column>
    
        <igx-action-strip #actionStrip>
            <igx-grid-pinning-actions></igx-grid-pinning-actions>
            <igx-grid-editing-actions></igx-grid-editing-actions>
        </igx-action-strip>
    </igx-tree-grid>
    html

    행 고정 API

    행 고정은 다음을 통해 제어됩니다. pinned의 입력 row. 고정된 행은 기본적으로 트리 그리드 상단에 렌더링되며 트리 그리드 본문에서 고정 해제된 행의 수직 스크롤을 통해 고정된 상태로 유지됩니다.

    this.treeGrid.getRowByIndex(0).pinned = true;
    typescript

    IgxTreeGridComponent의 트리 그리드 pinRow 또는 unpinRow 메소드를 사용하여 ID별로 레코드를 고정하거나 고정 해제할 수도 있습니다.

    this.treeGrid.pinRow('ALFKI');
    this.treeGrid.unpinRow('ALFKI');
    typescript

    행 ID는 그리드의 primaryKey 또는 레코드 인스턴스 자체에 의해 정의된 기본 키 값입니다. 두 메서드 모두 해당 작업의 성공 여부를 나타내는 부울 값을 반환합니다. 일반적으로 실패하는 이유는 행이 이미 원하는 상태에 있기 때문입니다.

    행은 마지막으로 고정된 행 아래에 고정됩니다. 고정된 행의 순서를 변경하려면 rowPinning 이벤트를 구독하고 이벤트 인수의 insertAtIndex 속성을 원하는 위치 인덱스로 변경하면 됩니다.

    <igx-tree-grid #treeGrid [data]="data" primaryKey="ID" foreignKey="ParentID" [autoGenerate]="true" (rowPinning)="rowPinning($event)">
    </igx-tree-grid>
    html
    public rowPinning(event) {
        event.insertAtIndex = 0;
    }
    typescript

    고정 위치

    pinning 구성 옵션을 통해 행 고정 위치를 변경할 수 있습니다. 핀 영역 위치를 상단 또는 하단으로 설정할 수 있습니다. 아래쪽으로 설정하면 고정된 행이 고정 해제된 행 뒤의 그리드 아래쪽에 렌더링됩니다. 고정 해제된 행은 세로로 스크롤할 수 있지만 고정된 행은 아래쪽에 고정된 상태로 유지됩니다.

    <igx-tree-grid [data]="data" [autoGenerate]="true" [pinning]="pinningConfig"></igx-tree-grid>
    html
    public pinningConfig: IPinningConfig = { rows: RowPinningPosition.Bottom };
    typescript
    App Builder | CTA 배너

    사용자 정의 행 고정 UI

    사용자 정의 UI를 정의하고 관련 API를 통해 행의 핀 상태를 변경할 수 있습니다.

    아이콘이 있는 추가 열을 통해

    액션 스트립 대신 최종 사용자가 클릭하여 특정 행의 핀 상태를 변경할 수 있도록 모든 행에 핀 아이콘을 표시하고 싶다고 가정해 보겠습니다. 이는 사용자 정의 아이콘이 포함된 셀 템플릿이 있는 추가 열을 추가하여 수행할 수 있습니다.

    <igx-tree-grid [data]="data" primaryKey="ID" foreignKey="ParentID" [autoGenerate]="false">
        <igx-column width="70px">
            <ng-template igxCell let-cell="cell" let-val>
                <igx-icon class="pin-icon" (mousedown)="togglePinning(cell.row, $event)">
                    {{cell.row.pinned ? 'lock' : 'lock_open'}}
                </igx-icon>
            </ng-template>
        </igx-column>
        <igx-column *ngFor="let c of columns" [field]="c.field" [header]="c.field">
        </igx-column>
    </igx-tree-grid>
    html

    사용자 정의 아이콘을 클릭하면 해당 행의 API 메소드를 사용하여 관련 행의 고정 상태를 변경할 수 있습니다.

    public togglePinning(row: IgxGridRow, event) {
        event.preventDefault();
        if (row.pinned) {
            row.unpin();
        } else {
            row.pin();
        }
    }
    typescript

    데모

    EXAMPLE
    TS
    HTML
    SCSS

    행 고정 제한 사항

    • 데이터 원본에 존재하는 레코드만 고정할 수 있습니다.
    • 행 고정 상태는 Excel로 내보내지지 않습니다. 행 고정이 적용되지 않은 것처럼 그리드가 내보내집니다.
    • 고정된 행이 그리드의 고정된 영역과 고정 해제된 영역 모두에 나타날 수 있도록 내부적으로 저장되는 방식으로 인해 그리드의 레코드를 요청 시 원격 끝점에서 가져올 때(원격 가상화) 행 고정이 지원되지 않습니다.
    • 그리드의 스크롤 가능 영역에 있는 고정된 행의 복사본은 고정된 행이 있을 때 다른 그리드 기능이 해당 기능을 달성하는 방법의 필수 부분이므로 생성을 비활성화하거나 제거할 수 없습니다.
    • 행 선택은 전적으로 행 ID와 함께 작동하므로 고정된 행을 선택하면 해당 복사본도 선택됩니다(그 반대도 마찬가지). 또한 고정된 영역 내에서 범위 선택(예: Shift + 클릭 사용)은 스크롤 가능한 영역 내에서 행 범위를 선택하는 것과 동일한 방식으로 작동합니다. 결과 선택에는 현재 고정되어 있지 않은 경우에도 그 사이의 모든 행이 포함됩니다. API를 통해 선택한 행을 가져오면 선택한 각 레코드의 단일 인스턴스만 반환됩니다.
    • 그리드에 primaryKey 설정되지 않고 원격 데이터 시나리오가 활성화된 경우(그리드에 표시할 데이터를 검색하기 위해 원격 서버에 대한 페이징, 정렬, 필터링, 스크롤 트리거 요청 시) 행은 데이터 이후 다음 상태를 잃게 됩니다. 요청이 완료되었습니다:
      • 행 선택
      • 행 확장/축소
      • 행 편집
      • 행 고정

    스타일링

    IgxTreeGrid를 사용하면 스타일을 지정할 수 있습니다. Ignite UI for Angular Theme Library. 트리 그리드의 grid-theme 다양한 속성을 제공하여 Tree Grid의 모든 기능을 사용자 정의할 수 있습니다.

    아래에서는 Tree Grid의 행 고정 스타일을 사용자 정의하는 단계를 살펴보겠습니다.

    스타일 라이브러리 가져오기

    행 고정 기능의 사용자 정의를 시작하려면 모든 스타일링 기능과 믹스인이 있는 index 파일을 가져와야 합니다.

    @use "igniteui-angular/theming" as *;
    
    // IMPORTANT: Prior to Ignite UI for Angular version 13 use:
    // @import '~igniteui-angular/lib/core/styles/themes/index';
    scss

    테마 정의

    다음으로, grid-theme 확장하고 원하는 대로 행 고정 기능을 사용자 정의하는 데 필요한 매개변수를 허용하는 새 테마를 만듭니다.

    $custom-grid-theme: grid-theme(
      $pinned-border-width: 5px,
      $pinned-border-style: double,
      $pinned-border-color: #ffcd0f,
      $cell-active-border-color: #ffcd0f
    );
    scss

    CSS 변수 사용

    마지막 단계는 사용자 정의 그리드 테마를 전달하는 것입니다.

    @include css-vars($custom-grid-theme);
    scss

    데모

    EXAMPLE
    TS
    HTML
    SCSS

    샘플은 Change Theme에서 선택한 전역 테마의 영향을 받지 않습니다.

    API 참조

    추가 리소스

    우리 커뮤니티는 활동적이며 항상 새로운 아이디어를 환영합니다.