요청 시 트리 그리드 로드

    Ignite UI for Web Components 서버에서 최소한의 데이터만 가져와서 사용자가 가능한 한 빨리 볼 수 있도록 렌더링할 수 있습니다. 그런 다음 사용자가 행을 확장한 후에만 해당 부모 행의 자식이 로드됩니다. 이 메커니즘은 Load on Demand라고도 하며, 모든 원격 데이터와 함께 작동하도록 쉽게 구성할 수 있습니다.

    Web Components 트리 그리드 주문형 로드 예제

    EXAMPLE
    DATA
    TS
    HTML
    CSS

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

    용법

    Load on Demand 기능은 두 가지 유형의 트리 그리드 데이터 원본(기본 및 외래 키 또는 하위 컬렉션)과 호환됩니다. 트리 그리드에서 루트 수준 데이터를 로드하고 데이터 원본 유형 중 하나에 필요한 키를 지정하기만 하면 됩니다. 사용자가 행을 확장할 때 자식 행을 로드하기 위해 트리 그리드는 콜백 입력 속성을 LoadChildrenOnDemand 제공합니다.

    <igc-tree-grid id="treeGrid"></igc-tree-grid>
    html
    constructor() {
        var treeGrid = document.getElementById("treeGrid") as IgcTreeGridComponent;
        treeGrid.data = this.employeesFlatData;
        treeGrid.loadChildrenOnDemand = (parentID: any, done: (children: any[]) => void) => {
        this.getData(parentID, (children) => done(children));
        };
    }
    ts

    LoadChildrenOnDemand 콜백은 두 개의 매개 변수를 제공합니다.

    • parentID - 확장되는 상위 행의 ID입니다.
    • done - 서버에서 자식을 검색할 때 자식과 함께 호출해야 하는 콜백입니다.
    public loadChildren = (parentID: any, done: (children: any[]) => void) => {
        this.getData(parentID, (children) => done(children));
    }
    typescript

    사용자가 확장 아이콘을 클릭하면 로드 표시기로 바뀝니다. done 콜백이 호출되면 로딩 표시기가 사라지고 자식이 로드됩니다. 트리 그리드는 기본 데이터 원본에 자식을 추가하고 필요한 키를 자동으로 채웁니다.

    행을 확장하기 전에 행에 자식이 있는지 여부에 대한 정보를 제공하는 방법이 있는 경우 HasChildrenKey 입력 속성을 사용할 수 있습니다. 이렇게 하면 데이터 개체에서 확장 표시기를 표시해야 하는지 여부를 나타내는 부울 속성을 제공할 수 있습니다.

    <igc-tree-grid id="treeGrid" primary-key="ID" foreign-key="ParentID" has-children-key="hasEmployees"></igc-tree-grid>
    html

    HasChildrenKey 속성은 설정할 필요가 없습니다. 제공하지 않으면 각 행에 확장 표시기가 표시됩니다. 자식이 없는 행을 확장한 후에도 정의되지 않았거나 빈 배열을 사용하여 done 콜백을 호출해야 합니다. 이 경우 로딩 표시기가 사라진 후에는 확장 표시기가 나타나지 않습니다.

    사용자 지정 로딩 표시기를 제공하려는 경우 RowLoadingIndicatorTemplate 옵션을 사용하여 사용자 지정 템플릿을 설정할 수 있습니다. 다음 코드 조각은 설정 방법을 보여 줍니다.

    constructor() {
        var treeGrid = document.getElementById("treeGrid") as IgcTreeGridComponent;
        treeGrid.data = this.employeesFlatData;
        treeGrid.rowLoadingIndicatorTemplate = this.rowLoadingTemplate;
        treeGrid.loadChildrenOnDemand = (parentID: any, done: (children: any[]) => void) => {
                   this.getData(parentID, (children) => done(children));
        };
    
    }
    public rowLoadingTemplate() {
        return html`<igc-icon name="loop" collection="material"></igc-icon>`;
    }
    ts

    API 참조

    Ignite UI for Web Components | CTA 배너

    추가 리소스

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