React Grid 행 고정

    React Grid의 Ignite UI for React 행 고정 기능은 한두 행을 그리드의 상단이나 하단에 고정할 수 있게 해줍니다. 행 고정은 사용자가 특정 순서로 행을 고정할 수 있게 해주며, 수직으로 스크롤IgrGrid 해도 항상 보이는 특별한 영역에 중복 배치할 수 있습니다. React Grid에는 Grid 내에서 컴포넌트를IgrActionStrip 초기화함으로써 활성화되는 내장 행 고정 UI가 있습니다. 또한, Row Pinning API를 통해 사용자 지정 UI를 정의하고 행의 핀 상태를 변경할 수 있습니다.

    React Grid Row Pinning Example

    Row Pinning UI

    내장 행 고정 UI는 컴포넌트를 추가IgrActionStripIgrGridPinningActions 하면 활성화됩니다. 액션 스트립은 행을 마우스로 올리면 자동으로 표시되며, 해당 행의 상태에 따라 핀 또는 핀 해제 버튼 아이콘이 표시됩니다. 고정된 행의 복사본을 스크롤하여 볼 수 있는 추가 동작도 각 고정된 행마다 표시됩니다.

    <IgrGrid>
        <IgrColumn field="Country" header="Country"> </IgrColumn>
        <IgrActionStrip>
            <IgrGridPinningActions></IgrGridPinningActions>
            <IgrGridEditingActions></IgrGridEditingActions>
        </IgrActionStrip>
    </IgrGrid>
    

    Row Pinning API

    행 핀닝은 입력을 통해pinnedRow 제어됩니다. 고정된 행은 기본적으로 상위 위에IgrGrid 렌더링되며, 고정되지 않은 행IgrGrid의 수직 스크롤을 통해 고정되어 있습니다.

    gridRef.current.getRowByIndex(0).pinned = true;
    

    또한 ID에 따라 기록을 고정하거나 해제하는 방법이나 방법을 사용할IgrGridpinRowunpinRow 수도 있습니다:

    gridRef.current.pinRow('ALFKI');
    gridRef.current.unpinRow('ALFKI');
    

    행 ID는 그리드의 주요primaryKey 키 값, 즉 레코드 인스턴스 자체에 의해 정의된다는 점에 유의하세요. 두 메서드 모두 해당 연산이 성공했는지 여부를 나타내는 불리언 값을 반환합니다. 보통 실패하는 이유는 행이 이미 원하는 상태에 있기 때문입니다.

    한 줄은 마지막 고정된 줄 아래에 고정됩니다. 고정된 행의 순서를 변경하려면 이벤트에RowPinning 가입하고 이벤트 인자의 속성을 원하는 위치 인덱스로 변경InsertAtIndex 하면 가능합니다.

    const rowPinning = (event: IgrPinRowEventArgs) => {
        event.detail.insertAtIndex = 0;
    }
    
    <IgrGrid autoGenerate={true} onRowPinning={rowPinning}>
    </IgrGrid>
    

    Pinning Position

    설정 옵션을 통해pinning 행 고정 위치를 변경할 수 있습니다. 핀 영역 위치를 상단 또는 하단으로 설정할 수 있습니다. 아래쪽으로 설정하면 고정되지 않은 행 다음, 그리드 하단에 렌더링됩니다. 고정되지 않은 행은 세로로 스크롤할 수 있고, 고정된 행은 하단에 고정되어 있습니다.

    const pinning: IgrPinningConfig = { rows : RowPinningPosition.Bottom };
    
    <IgrGrid ref={gridRef} autoGenerate={true} pinning={pinning}>
    </IgrGrid>
    

    Custom Row Pinning UI

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

    Via extra column with icon

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

    const cellPinCellTemplate = (ctx: IgrCellTemplateContext) => {
        const index = ctx.cell.row.index;
        return (
            <>
                <span onPointerDown={(e: any) => toggleRowPin(index)}>📌</span>
            </>
        );
    }
    
    <IgrGrid primaryKey="ID" autoGenerate={false}>
        <IgrColumn width="70px" bodyTemplate={cellPinCellTemplate}>
        </IgrColumn>
    </IgrGrid>
    

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

    const toggleRowPin = (index: number) => {
      const grid = grid1Ref.current;
      grid.getRowByIndex(index).pinned = !grid.getRowByIndex(index).pinned;
    }
    

    데모

    Row Pinning Limitations

    • 데이터 원본에 존재하는 레코드만 고정할 수 있습니다.
    • 행 고정 상태는 Excel로 내보내지지 않습니다. 행 고정이 적용되지 않은 것처럼 그리드가 내보내집니다.
    • 그리드의 스크롤 가능 영역에 있는 고정된 행의 복사본은 고정된 행이 있을 때 다른 그리드 기능이 해당 기능을 달성하는 방법의 필수 부분이므로 생성을 비활성화하거나 제거할 수 없습니다.
    • 행 선택은 행 ID와 함께 완전히 작동하므로 고정된 행을 선택하면 해당 복사본도 선택됩니다(그 반대의 경우도 마찬가지). 또한 고정된 영역 내에서 범위 선택(예: 사용 SHIFT + 클릭)은 스크롤 가능한 영역 내에서 행 범위를 선택하는 것과 동일한 방식으로 작동합니다. 결과 선택 항목에는 현재 고정되어 있지 않은 경우에도 그 사이의 모든 행이 포함됩니다. API를 통해 선택한 행을 가져오면 선택한 각 레코드의 단일 인스턴스만 반환됩니다.

    Styling

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

    <IgrGrid className="grid"></IgrGrid>
    

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

    .grid {
        --ig-grid-pinned-border-width: 5px;
        --ig-grid-pinned-border-style: double;
        --ig-grid-pinned-border-color: #FFCD0F;
        --ig-grid-cell-active-border-color: #FFCD0F;
    }
    

    데모

    API References

    Additional Resources

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