Angular 그리드 편집

    Ignite UI for Angular 레코드 생성, 업데이트 및 삭제와 같은 데이터 조작 작업을 수행하는 간편한 방법을 제공합니다. 데이터 조작 단계는 Cell Editing, Row EditingBatch Editing 입니다. Grid는 이러한 작업이 수행되는 방식을 사용자 지정할 수 있는 강력한 공개 API를 제공합니다. 또한 Cell Editing은​ ​igxCellEditor 지시문 또는 igxRow 지시문을 통해 쉽게 사용자 지정할 수 있는 열 데이터 유형을 기반으로 여러 기본 편집기를 노출합니다.

    설정

    활성화해야 하는 편집 모드를 지정하기 위해 Grid는 editablerowEditable과 같은 부울 속성을 노출합니다.

    편집 가능한 속성을 사용하면 다음 옵션을 지정할 수 있습니다.

    • false- 해당 열의 편집이 비활성화됩니다. /기본값/
    • true- 해당 열에 대한 편집이 활성화됩니다.

    열을 편집할 수 없는 경우에도 Grid에서 제공하는 공개 API를 통해 해당 값을 수정할 수 있습니다.

    rowEditable 속성을 사용하면 다음 옵션을 지정할 수 있습니다.

    • false- 해당 그리드의 행 편집이 비활성화됩니다. /기본값/
    • true- 해당 그리드의 행 편집이 활성화됩니다.

    Grid에서 rowEditable 속성을 true로 설정하고 editable 속성이 어떤 열에도 명시적으로 정의되어 있지 않으면 기본 키를 제외한 모든 열에 대해 편집이 활성화됩니다.

    셀 편집행 편집 모드 모두에서 그리드의 일괄 편집을 활성화할 수 있습니다. 일괄 편집을 설정하려면 그리드에 TransactionService 를 제공해야 합니다.

    • 셀 및 일괄 편집- 이 시나리오에서는 각 셀의 모든 단일 수정 사항이 별도로 보존되며 실행 취소/다시 실행 작업이 셀 수준에서 가능합니다.
    • 행 및 일괄 편집- 이 시나리오에서는 수정 사항이 행 수준에서 유지되므로 실행 취소/다시 실행 작업은 수정된 각 셀에 대해 작동하지 않고 각 행의 여러 셀에 대해 작동합니다.

    템플릿 편집

    데이터 유형별 편집 템플릿을 사용하려면 열 dataType 속성을 지정해야 합니다. 이제 각 유형의 기본 템플릿이 무엇인지 살펴보겠습니다.

    • string 데이터 유형의 경우 기본 템플릿은 igxInput을 사용합니다.
    • number 데이터 유형의 경우 기본 템플릿은 igxInput type="number"를 사용하므로 숫자로 구문 분석할 수 없는 값으로 셀을 업데이트하려고 하면 변경 사항이 삭제되고 셀의 값은 0으로 설정합니다.
    • date 데이터 유형의 경우 기본 템플릿은 igxDatePicker를 사용합니다.
    • dateTime 데이터 유형의 경우 기본 템플릿은 IgxDateTimeEditor 지시문을 사용합니다. 이 편집기는 DateTime 개체의 입력 요소 부분에 대한 마스크 지침을 제공합니다.
    • date 데이터 유형의 경우 기본 템플릿은 IgxDatePicker 구성 요소를 사용합니다.
    • time 데이터 유형의 경우 기본 템플릿은 IgxTimePicker 구성 요소를 사용합니다.
    • boolean 데이터 유형의 경우 기본 템플릿은 igxCheckbox를 사용합니다.
    • currency 데이터 유형의 경우 기본 템플릿은 애플리케이션 또는 그리드 로케일 설정을 기반으로 하는 접두사/접미사 구성과 함께 IgxInputGroup을 사용합니다.
    • percent 데이터 유형의 경우 기본 템플릿은 편집된 값의 미리 보기를 백분율로 표시하는 접미사 요소와 함께 IgxInputGroup을 사용합니다.
    • 사용자 정의 템플릿의 경우 셀 편집 항목을 참조하세요.

    사용 가능한 모든 열 데이터 유형은 공식 열 유형 항목에서 찾을 수 있습니다.

    날짜-시간 열의 기본 템플릿 편집기Default template editors of date-time columns

    의 템플릿 편집기 date, dateTime 그리고 time column 데이터 유형은 다음과 같이 기본 입력 형식을 사용합니다. IgxGridlocale.

    이 경우 pipeArgs 객체 format 속성이 열에 설정되면 편집기의 입력 형식이 유추됩니다. 조건은 숫자 날짜-시간 부분만 포함하는 것으로 구문 분석할 수 있다는 것입니다.

    편집기 입력 형식을 명시적으로 설정해야 하는 경우 type IColumnEditorOptionseditorOptions 객체를 활용할 수 있습니다. 편집기 및 time 열 데이터 형식의 입력 dateTime​ ​date 형식으로 사용되는 속성을 허용합니다 dateTimeFormat.

    const editorOptions: IColumnEditorOptions = {
        dateTimeFormat: 'MM/dd/YYYY',
    }
    typescript
    <igx-column field="sampleDate" dataType="date" [editorOptions]="editorOptions"></igx-column>
    html

    이벤트 인수 및 순서

    그리드는 편집 경험을 더 효과적으로 제어할 수 있는 다양한 이벤트를 표시합니다. 이러한 이벤트는 행 편집셀 편집 수명 주기 동안(편집 작업을 시작, 커밋 또는 취소할 때) 발생합니다.

    이벤트 설명 인수 취소 가능
    rowEditEnter 만약에rowEditing 활성화되어 행이 편집 모드로 들어갈 때 실행됩니다. IGridEditEventArgs true
    cellEditEnter 셀이 편집 모드로 들어갈 때 발생합니다(이후rowEditEnter) IGridEditEventArgs true
    cellEdit 값이 변경되면 셀 값이 커밋되기 직전에​ ​실행 됩니다(예:Enter) IGridEditEventArgs true
    cellEditDone 값이 변경되면 셀이 편집되고 셀 값이 커밋후에 실행됩니다. IGridEditDoneEventArgs false
    cellEditExit 셀이 편집 모드를 종료할 때 발생합니다. IGridEditDoneEventArgs false
    rowEdit 만약에rowEditing 활성화되면 편집 모드의 값이 커밋되기 직전에 실행 됩니다(예:Done 행 편집 오버레이의 버튼) IGridEditEventArgs true
    rowEditDone 만약에rowEditing 활성화되면 행이 편집되고 새 행의 값이 커밋된 후에​ ​실행 됩니다. IGridEditDoneEventArgs false
    rowEditExit 만약에rowEditing 활성화되면 행이 편집 모드를 종료할 때 실행됩니다. IGridEditDoneEventArgs false

    이벤트 취소

    • RowEditEnter- 행이나 셀 모두 편집 모드로 들어가지 않습니다.
    • CellEditEnter- 셀 편집 입력을 방지합니다. rowEditable 활성화되면 행 편집이 트리거되지만 셀 편집은 계속 금지됩니다.
    • CellEdit- 허용된 셀/행 편집, 완료 버튼 또는 Enter를 누르면 값 또는 행 트랜잭션이 커밋되지 않습니다. 셀 편집 및 행 편집은 취소 버튼을 클릭할 때까지 닫히지 않습니다.
    • RowEdit- 셀 커밋이 가능하지만 전체 행은 불가능합니다. 행은 편집 모드로 유지되며 행 트랜잭션은 열린 것으로 간주됩니다. 완료를 누르면 행이 커밋되거나 닫히지 않습니다. 취소 버튼은 변경 사항을 적용하지 않고 편집 프로세스와 트랜잭션을 닫습니다.

    다음 샘플은 실제 편집 실행 순서를 보여줍니다.

    EXAMPLE
    TS
    HTML
    SCSS

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

    기능 통합

    셀/행이 편집 모드에 있는 동안 사용자는 다양한 방법으로 그리드와 상호 작용할 수 있습니다. 다음 표에서는 특정 상호 작용이 현재 편집에 어떤 영향을 미치는지 지정합니다.

    그리드 필터링 정렬 페이징 움직이는 고정 숨김 그룹화 기준 크기 조정 탈출하다 입력하다 F2 셀 클릭 새 행 추가/삭제/수정
    편집 모드 유지
    편집 모드 종료
    저지르다
    버리다

    표에서 볼 수 있듯이 열 크기 조정을 제외한 모든 상호 작용은 편집을 종료하고 새 값을 삭제합니다. 새 값이 커밋되어야 하는 경우 개발자는 해당 기능 "-ing" 이벤트에서 이를 수행할 수 있습니다.

    셀/행이 편집 모드에 있는 동안 사용자가 열을 정렬하려고 시도하는 경우 새 값을 커밋하는 방법의 예:

    <igx-grid #grid [data]="localData" [primaryKey]="'ProductID'" (sorting)="onSorting($event)">
    ...
    </igx-grid>
    html
    public onSorting(event: ISortingEventArgs) {
        this.grid.endEdit(true);
        // (event.owner as IgxGridComponent).endEdit(true);
    }
    typescript

    API 참조

    추가 리소스