Web Components Tree Grid 개요 및 구성

    Ignite UI for Web Components Tree Grid는 계층적 또는 플랫 데이터를 쉽게 표시하고 조작하는 데 사용됩니다. 매우 적은 코드로 데이터를 빠르게 바인딩하거나 다양한 이벤트를 사용하여 다양한 동작을 사용자 정의합니다. 이 구성 요소는 데이터 선택, Excel 스타일 필터링, 정렬, 페이지 지정, 템플릿 및 열 이동과 같은 풍부한 기능 세트를 제공합니다. Material Table 기반 UI Tree Grid 덕분에 표 형식 데이터를 표시하는 것이 그 어느 때보다 쉽고 아름다워졌습니다.

    Web Components 트리 그리드 예제

    이 예에서는 사용자가 계층적 또는 단순 데이터를 조작하는 방법을 볼 수 있습니다. 필터링 및 정렬 옵션, 고정 및 숨기기, 행 선택, Excel 및 CSV로 내보내기가 포함되었습니다.

    EXAMPLE
    DATA
    TS
    HTML
    CSS

    이 샘플이 마음에 드시나요? 당사의 완전한 Ignite UI for Web Components 툴킷에 액세스하여 몇 분 만에 나만의 앱을 빌드하기 시작하세요. 무료로 다운로드하세요.

    Ignite UI for Web Components 시작하기

    종속성

    Web Components 트리 그리드를 시작하려면 먼저 패키지를 설치해야 합니다 igniteui-webcomponents-grids.

    npm install --save igniteui-webcomponents-grids
    cmd

    트리 그리드를 사용하려면 다음 가져오기도 포함해야 합니다.

    import 'igniteui-webcomponents-grids/grids/combined';
    typescript

    해당 스타일도 참조해야 합니다. 테마 중 하나에 대해 밝거나 어두운 옵션을 선택하고 프로젝트 구성에 따라 테마를 가져올 수 있습니다.

    import 'igniteui-webcomponents-grids/grids/themes/light/bootstrap.css';
    typescript

    또는 연결하려면 다음을 수행하세요.

    <link rel='stylesheet' href='node_modules/igniteui-webcomponents-grids/grids/themes/light/bootstrap.css'>
    typescript

    트리 그리드의 모양을 사용자 정의하는 방법에 대한 자세한 내용은 스타일 지정 섹션을 참조하세요.

    Ignite UI for Web Components | CTA 배너

    용법

    트리 그리드는 그리드와 많은 기능을 공유하지만 데이터를 계층적으로 표시하는 기능도 추가합니다. 이를 달성하기 위해 트리 그리드는 모든 데이터 개체에 대해 하위 컬렉션을 사용하거나 모든 데이터 개체에 대해 기본 및 외래 키를 사용하여 데이터 개체 간의 관계를 정의하는 몇 가지 방법을 제공합니다.

    트리 셀

    트리 그리드의 계층 구조(하위 컬렉션 또는 기본 및 외래 키)를 구축하는 데 사용되는 옵션에 관계없이 트리 그리드의 행은 두 가지 유형의 셀로 구성됩니다.

    • GridCell- 값을 포함하는 일반 셀입니다.
    • TreeGridCell- 셀 행의 수준을 기반으로 하는 값, 확장/축소 표시기 및 들여쓰기 div 요소를 포함하는 트리 셀입니다. 행 구성 요소의 수준은 내부 treeRowlevel 속성을 통해 액세스할 수 있습니다.

    각 행에는 하나의 트리 셀만 있을 수 있지만 일반 셀은 여러 개(또는 없음) 있을 수 있습니다.

    초기 확장 깊이

    처음에 트리 그리드는 모든 노드 수준을 확장하여 표시합니다. 이 동작은 ExpansionDepth 속성을 사용하여 구성할 수 있습니다. 기본적으로 이 값은 Infinity 이며, 이는 모든 노드 수준이 확장됨을 의미합니다. 이 속성을 숫자 값으로 설정하여 초기 확장 깊이를 제어할 수 있습니다. 예를 들어 0은 루트 수준 노드만 표시하고, 1은 루트 수준 노드와 해당 하위 노드를 표시하는 식입니다.

    어린이 컬렉션

    자식 컬렉션 옵션을 사용하는 경우 모든 데이터 개체에는 부모 데이터 개체와 동일한 유형의 항목으로 채워지는 자식 컬렉션이 포함됩니다. 이렇게 하면 트리 그리드의 모든 레코드가 자식에 대한 직접 참조를 갖게 됩니다. 이 경우 원래 데이터 원본을 포함하는 트리 표의 데이터 속성은 계층적으로 정의된 컬렉션이 됩니다.

    이 샘플에서는 다음 컬렉션 구조를 사용해 보겠습니다.

    const EMPLOYEE_DATA = [
        {
            Name: "Johnathan Winchester",
            ID: 1,
            HireDate: new Date(2008, 3, 20),
            Age: 55,
            Employees: [
                {
                    Name: "Michael Burke",
                    ID: 3,
                    HireDate: new Date(2011, 6, 3),
                    Age: 43,
                    Employees: []
                },
                {
                    Name: "Thomas Anderson"
                    ID: 2,
                    HireDate: new Date(2009, 6, 19),
                    Age: 29,
                    Employees: []
                },
                // ...
            ]
        },
        // ...
    ]
    typescript

    이제 컬렉션을 가져와서 Data 트리 그리드에 바인딩하는 것부터 시작하겠습니다.

    <igc-tree-grid auto-generate="false" id="treeGrid" name="treeGrid">
        <igc-column field="name" header="Name" data-type="string"></igc-column>
        <igc-column field="hireDate" header="Hire Date" data-type="date"></igc-column>
        <igc-column field="age" header="Age" data-type="number"></igc-column>
    </igc-tree-grid>
    html
        constructor() {
            var treeGrid = document.getElementById('treeGrid') as IgcTreeGridComponent;
            treeGrid.childDataKey = "Employees";
            treeGrid.data = this.employeesNestedData;
        }
    ts

    트리 그리드에서 계층 구조를 작성하려면 해당 ChildDataKey 속성을 각 데이터 개체에서 사용되는 자식 컬렉션의 이름으로 설정해야 합니다. 여기서는 Employees 컬렉션이 됩니다. 또한 자동 열 생성을 비활성화하고 데이터 개체의 실제 속성과 일치시켜 수동으로 정의할 수 있습니다. (Employees 컬렉션은 계층 구조에 자동으로 사용되므로 열 정의에 포함할 필요가 없습니다.)

    이제 rowSelectionpaging 기능을 활성화할 수 있습니다. 또한 각 열에 대한 요약, 필터링, 정렬, 편집, 이동 및 크기 조정 기능을 활성화할 수도 있습니다.

    <igc-tree-grid auto-generate="false" id="treeGrid" child-data-key="Employees" row-selection="multiple" allow-filtering="true" moving="true">
        <igc-column field="name" header="Name" data-type="string" sortable="true" resizable="true" has-summary="true" editable="true"></igc-column>
        <igc-column field="hireDate" header="Hire Date" data-type="date" sortable="true" resizable="true" has-summary="true" editable="true"></igc-column>
        <igc-column field="age" header="Age" data-type="number" sortable="true" resizable="true" has-summary="true" editable="true"></igc-column>
        <igc-paginator></igc-paginator>
    </igc-tree-grid>
    html

    마지막으로, 트리 그리드의 도구 모음과 함께 열 숨기기, 열 고정 및 내보내기 IgcGridToolbarHiding​ ​IgcGridToolbarPinning 기능을 IgcGridToolbar 활성화할 수 있습니다 IgcGridToolbarExporter.

    <igc-tree-grid auto-generate="false" id="treeGrid" name="treeGrid" child-data-key="Employees" row-selection="multiple" allow-filtering="true" moving="true">
        <igc-column field="name" header="Name" data-type="string" sortable="true" resizable="true" has-summary="true" editable="true"></igc-column>
        <igc-column field="hireDate" header="Hire Date" data-type="date" sortable="true" resizable="true" editable="true"></igc-column>
        <igc-column field="age" header="Age" data-type="number" sortable="true" resizable="true" editable="true"></igc-column>
        <igc-paginator></igc-paginator>
        <igc-grid-toolbar>
            <igc-grid-toolbar-title> Employees </igc-grid-toolbar-title>
            <igc-grid-toolbar-actions>
                <igc-grid-toolbar-hiding> </igc-grid-toolbar-hiding>
                <igc-grid-toolbar-pinning> </igc-grid-toolbar-pinning>
                <igc-grid-toolbar-exporter export-csv="true" export-excel="true"> </igc-grid-toolbar-exporter>
            </igc-grid-toolbar-actions>
        </igc-grid-toolbar>
    </igc-tree-grid>
    html

    이 문서의 시작 부분에 있는 트리 그리드 예제 섹션에서 위 코드의 결과를 볼 수 있습니다.

    기본 및 외래 키

    기본 및 외래 키 옵션을 사용하는 경우 모든 데이터 개체에는 기본 키와 외래 키가 포함됩니다. 기본 키는 현재 데이터 개체의 고유 식별자이고 외래 키는 상위 개체의 고유 식별자입니다. 이 경우 원래 데이터 소스가 포함된 트리 그리드의 data 속성은 플랫 컬렉션이 됩니다.

    const data = [
        { ID: 1, ParentID: -1, Name: "Casey Houston", JobTitle: "Vice President", Age: 32 },
        { ID: 2, ParentID: 1, Name: "Gilberto Todd", JobTitle: "Director", Age: 41 },
        { ID: 3, ParentID: 2, Name: "Tanya Bennett", JobTitle: "Director", Age: 29 },
        { ID: 4, ParentID: 2, Name: "Jack Simon", JobTitle: "Software Developer", Age: 33 },
        { ID: 5, ParentID: 8, Name: "Celia Martinez", JobTitle: "Senior Software Developer", Age: 44 },
        { ID: 6, ParentID: -1, Name: "Erma Walsh", JobTitle: "CEO", Age: 52 },
        { ID: 7, ParentID: 2, Name: "Debra Morton", JobTitle: "Associate Software Developer", Age: 35 },
        { ID: 8, ParentID: 10, Name: "Erika Wells", JobTitle: "Software Development Team Lead", Age: 50 },
        { ID: 9, ParentID: 8, Name: "Leslie Hansen", JobTitle: "Associate Software Developer", Age: 28 },
        { ID: 10, ParentID: -1, Name: "Eduardo Ramirez", JobTitle: "Development Manager", Age: 53 }
    ];
    typescript

    위의 샘플 데이터에서 모든 레코드에는 ID, ParentID 및 Name, JobTitle 및 Age와 같은 몇 가지 추가 속성이 있습니다. 앞서 언급했듯이 레코드의 ID는 고유해야 합니다 PrimaryKey. ParentID는 부모 노드의 ID를 포함하며 a ForeignKey로 설정할 수 있습니다. 행에 트리 표의 행과 일치하지 않는 ParentID가 있는 경우 이 행은 루트 행임을 의미합니다.

    부모-자식 관계는 트리 그리드의 PrimaryKey and ForeignKey 속성을 사용하여 구성됩니다.

    다음은 위의 플랫 컬렉션에 정의된 데이터를 표시하도록 트리 그리드를 구성하는 방법을 보여주는 구성 요소의 템플릿입니다.

     <igc-tree-grid auto-generate="false" name="treeGrid" id="treeGrid" primary-key="ID" foreign-key="ParentID" allow-filtering="true" moving="true" row-selection="multiple">
        <igc-column field="Name" data-type="string"></igc-column>
        <igc-column field="JobTitle" header="Job Title"></igc-column>
        <igc-column field="Age" data-type="number"></igc-column>
    </igc-tree-grid>
    html

    또한 rowSelection 속성을 사용하여 트리 그리드의 행 선택 기능과 각 열에 대한 필터링, 정렬, 편집, 이동 및 크기 조정 기능을 활성화합니다.

     <igc-tree-grid auto-generate="false" name="treeGrid" id="treeGrid" primary-key="ID" foreign-key="ParentID" allow-filtering="true" moving="true" row-selection="multiple">
        <igc-column field="Name" data-type="string" sortable="true" editable="true" resizable="true"> </igc-column>
        <igc-column field="JobTitle" header="Job Title" data-type="string" sortable="true" editable="true" resizable="true"> </igc-column>
        <igc-column field="Age" data-type="number" sortable="true" editable="true" resizable="true"> </igc-column>
    </igc-tree-grid>
    html

    최종 결과는 다음과 같습니다.

    EXAMPLE
    DATA
    TS
    HTML
    CSS

    지속성과 통합

    트리 그리드 셀의 들여쓰기는 필터링, 정렬 및 페이징과 같은 다른 트리 그리드 기능에서 유지됩니다.

    • Sorting가 열에 적용되면 데이터 행이 수준별로 정렬됩니다. 즉, 루트 수준 행은 해당 자식과 독립적으로 정렬됩니다. 각각의 자식 컬렉션도 각각 독립적으로 정렬됩니다.
    • 첫 번째 열(a VisibleIndex가 0인 열)은 항상 트리 열입니다.
    • 열 고정, 열 숨기기 및 열 이동과 같은 작업 후에 a VisibleIndex가 0으로 끝나는 열은 트리 열이 됩니다.
    • 내보낸 Excel 워크시트는 트리 그리드 자체에 그룹화된 레코드를 그룹화하여 계층 구조를 반영합니다. 모든 레코드 확장 상태도 유지되고 반영됩니다.
    • CSV로 내보낼 때 레벨 및 확장 상태가 무시되고 모든 데이터가 플랫으로 내보내집니다.

    Web Components 트리 그리드 스타일링 구성

    사전 정의된 테마 외에도 사용 가능한 CSS 속성 중 일부를 설정하여 그리드를 추가로 사용자 정의할 수 있습니다. 일부 색상을 변경하려면 먼저 그리드에 대한 클래스를 설정해야 합니다.

    <igc-tree-grid class="tree-grid">
    ts

    그런 다음 해당 클래스에 대한 관련 CSS 속성을 설정합니다.

    .tree-grid {
        --ig-grid-header-background: #494949;
        --ig-grid-header-text-color: #FFF;
        --ig-grid-expand-icon-color: #FFCD0F;
        --ig-grid-expand-icon-hover-color: #E0B710;
        --ig-grid-row-hover-background: #F8E495;
    }
    css

    EXAMPLE
    DATA
    TS
    HTML
    CSS

    API 참조

    추가 리소스

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