Web Components 계층적 그리드의 Ignite UI for Web Components 셀 선택은 풍부한 데이터 선택 기능을 가능하게 하고 구성 요소에서 강력한 API를 IgcHierarchicalGridComponent 제공합니다. Web Components Hierarchical Grid는 세 가지 선택 모드를 지원합니다.
계층적 그리드(Hierarchical Grid) 다중 셀 선택
계층적 그리드 단일 선택
계층적 그리드 없음 선택
IgcHierarchicalGridComponent에서 그리드 수준에서 셀 선택 모드를 지정할 수 있습니다. 예를 들어 부모 그리드에서는 다중 셀 선택을 활성화할 수 있지만 자식 그리드에서는 셀 선택 모드를 단일 또는 비활성화할 수 있습니다.
각 옵션에 대해 자세히 알아보겠습니다.
Web Components 계층적 그리드 셀 선택 예
아래 샘플은 세 가지 유형의 IgcHierarchicalGridComponent 셀 선택 동작을 보여줍니다. 아래 버튼을 사용하여 사용 가능한 각 선택 모드를 활성화하십시오. 스낵바 메시지 상자를 통한 각 버튼 상호 작용에 대한 간략한 설명이 제공됩니다.
<!DOCTYPE html><html><head><title>Sample | Ignite UI | Web Components | infragistics</title><metacharset="UTF-8" /><linkrel="shortcut icon"href="https://static.infragistics.com/xplatform/images/browsers/wc.png" ><linkrel="stylesheet"href="https://fonts.googleapis.com/icon?family=Material+Icons" /><linkrel="stylesheet"href="https://fonts.googleapis.com/css?family=Kanit&display=swap" /><linkrel="stylesheet"href="https://fonts.googleapis.com/css?family=Titillium Web" /><linkrel="stylesheet"href="https://static.infragistics.com/xplatform/css/samples/shared.v8.css" /><linkrel="stylesheet"href="/src/index.css"type="text/css" /></head><body><divid="root"><divclass="container sample ig-typography"><divclass="options vertical"><igc-property-editor-panelname="PropertyEditorHierarchicalGrid"id="PropertyEditorHierarchicalGrid"description-type="WebHierarchicalGrid"is-horizontal="true"is-wrapping-enabled="true"><igc-property-editor-property-descriptionlabel="Hierarchical Grid Cell Selection"property-path="CellSelection"name="CellSelectionEditorHierarchicalGrid"id="CellSelectionEditorHierarchicalGrid"value-type="EnumValue"></igc-property-editor-property-description><igc-property-editor-property-descriptionlabel="Row Island Cell Selection"property-path=""name="CellSelectionEditorRowIsland"id="CellSelectionEditorRowIsland"value-type="EnumValue"drop-down-names="None, Single, Multiple, MultipleCascade"drop-down-values="None, Single, Multiple, MultipleCascade"></igc-property-editor-property-description></igc-property-editor-panel></div><divclass="container fill"><igc-hierarchical-gridauto-generate="false"primary-key="ID"id="hierarchicalGrid"name="hierarchicalGrid"id="hierarchicalGrid"><igc-columnfield="Artist"header="Artist"data-type="string"></igc-column><igc-columnfield="HasGrammyAward"header="Has Grammy Award"data-type="boolean"></igc-column><igc-columnfield="Debut"header="Debut"data-type="number"></igc-column><igc-columnfield="GrammyNominations"header="Grammy Nominations"data-type="number"has-summary="true"></igc-column><igc-columnfield="GrammyAwards"header="Grammy Awards"data-type="number"has-summary="true"></igc-column><igc-row-islandchild-data-key="Albums"auto-generate="false"name="rowIsland"id="rowIsland"><igc-columnfield="Album"header="Album"data-type="string"></igc-column><igc-columnfield="LaunchDate"header="Launch Date"data-type="date"></igc-column><igc-columnfield="BillboardReview"header="Billboard Review"data-type="string"></igc-column><igc-columnfield="USBillboard200"header="US Billboard 200"data-type="string"></igc-column></igc-row-island></igc-hierarchical-grid></div></div></div><!-- This script is needed only for parcel and it will be excluded for webpack -->
<% if (false) { %><scriptsrc="src/index.ts"></script><% } %>
</body></html>html
/* shared styles are loaded from: *//* https://static.infragistics.com/xplatform/css/samples */css
이 샘플이 마음에 드시나요? 당사의 완전한 Ignite UI for Web Components 툴킷에 액세스하여 몇 분 만에 나만의 앱을 빌드하기 시작하세요. 무료로 다운로드하세요.
선택 유형
계층적 그리드(Hierarchical Grid) 다중 셀 선택
이는 부모 및 자식 그리드 모두의 기본 셀 선택 모드입니다. 한 번에 하나의 그리드에서 셀을 선택할 수 있으며 교차 그리드 범위를 선택하거나 선택한 셀을 여러 그리드에 둘 수 없습니다. 범위 선택 및 마우스 끌기 기능과 관련된 각 키 조합은 동일한 그리드에서만 사용할 수 있습니다.
셀을 선택하는 방법:
마우스 드래그- 셀의 직사각형 데이터 선택이 수행됩니다.
Ctrl 키 누르기 + 마우스 끌기- 여러 범위 선택이 수행됩니다. 다른 기존 셀 선택은 유지됩니다.
Shift 키를 사용하여 즉시 다중 셀 선택. 단일 셀을 선택하고 Shift 키를 누른 채 다른 단일 셀을 선택합니다. 두 셀 사이의 셀 범위가 선택됩니다. Shift 키를 누른 상태에서 다른 두 번째 셀을 선택하면 셀 선택 범위는 처음 선택한 셀 위치(시작점)를 기준으로 업데이트됩니다.
Shift 키를 누른 상태에서 화살표 키를 사용하여 키보드 다중 셀 선택. 선택된 셀을 기준으로 다중 셀 선택 범위가 생성됩니다.
Shift 키를 누른 상태에서 Ctrl + ↑ ↓ ← → 키와 Ctrl + Home / End를 사용하여 키보드 다중 셀 선택. 선택된 셀을 기준으로 다중 셀 선택 범위가 생성됩니다.
로 클릭하면 마우스 왼쪽 키를 누른 상태에서 Ctrl 키 키는 선택한 셀 컬렉션에 단일 셀 범위를 추가합니다.
마우스로 클릭하고 드래그하면 연속적인 다중 셀 선택이 가능합니다.
계층적 그리드 단일 선택
cellSelection Single로 설정하면 그리드에서 한 번에 하나의 셀만 선택할 수 있습니다. 또한 모드 마우스 끌기는 작동하지 않으며 셀을 선택하는 대신 기본 텍스트 선택이 됩니다.
단일 셀을 선택한 경우 selected 이벤트가 발생합니다. 선택 모드 ~이다 하나의 또는 다수의. 다중 셀 선택 모드에서 셀 범위를 선택할 때 RangeSelected 이벤트가 방출됩니다.
계층적 그리드 없음 선택
셀 선택을 비활성화하려면 cellSelection none으로 설정하면 됩니다. 이 모드에서 셀을 클릭하거나 키보드로 탐색하려고 하면 셀이 선택되지 않고 활성화 스타일만 적용되며 페이지의 다른 요소를 스크롤하거나 클릭하면 셀이 손실됩니다. 선택을 정의하는 유일한 방법은 아래에 설명된 API 메서드를 사용하는 것입니다.
키보드 탐색 상호 작용
Shift 키를 누르고 있는 동안
현재 선택 항목에 위 셀을 추가하려면 Shift + ↑를 누르세요.
현재 선택 항목에 아래 셀을 추가하려면 Shift + ↓를 누르세요.
현재 선택 항목에 왼쪽 셀을 추가하려면 Shift + ←를 누르세요.
Shift + → 현재 선택 항목에 오른쪽 셀을 추가합니다.
Ctrl + Shift 키를 누르고 있는 동안
Ctrl + Shift + ↑를 사용하면 열에서 초점이 맞춰진 셀 위의 모든 셀을 선택할 수 있습니다.
Ctrl + Shift + ↓를 눌러 열에서 초점이 맞춰진 셀 아래의 모든 셀을 선택합니다.
Ctrl + Shift + ←를 누르면 행 시작 부분까지 모든 셀을 선택합니다.
Ctrl + Shift + → 행 끝까지의 모든 셀을 선택합니다.
Ctrl + Shift + Home: 초점이 맞춰진 셀부터 그리드의 첫 번째 셀까지 모든 셀을 선택합니다.
Ctrl + Shift + End -초점이 맞춰진 셀부터 그리드의 마지막 셀까지 모든 셀을 선택합니다.
연속스크롤은 Grid의 Body 내에서만 가능합니다.
API 사용법
다음은 범위를 선택하거나, 선택 항목을 지우거나, 선택한 셀 데이터를 가져오는 데 사용할 수 있는 방법입니다.
범위 선택
selectRange- API를 사용하여 셀 범위를 선택합니다. rowStart 및 rowEnd는 행 인덱스를 사용해야 하고, columnStart 및 columnEnd는 열 인덱스 또는 열 데이터 필드 값을 사용할 수 있습니다.
<!DOCTYPE html><html><head><title>Sample | Ignite UI | Web Components | infragistics</title><metacharset="UTF-8" /><linkrel="shortcut icon"href="https://static.infragistics.com/xplatform/images/browsers/wc.png" ><linkrel="stylesheet"href="https://fonts.googleapis.com/icon?family=Material+Icons" /><linkrel="stylesheet"href="https://fonts.googleapis.com/css?family=Kanit&display=swap" /><linkrel="stylesheet"href="https://fonts.googleapis.com/css?family=Titillium Web" /><linkrel="stylesheet"href="https://static.infragistics.com/xplatform/css/samples/shared.v8.css" /><linkrel="stylesheet"href="/src/index.css"type="text/css" /></head><body><divid="root"><divclass="container sample ig-typography"><divclass="options vertical"><igc-property-editor-panelname="PropertyEditor"id="PropertyEditor"description-type="WebHierarchicalGrid"is-horizontal="true"is-wrapping-enabled="true"><igc-property-editor-property-descriptionproperty-path="CellSelection"name="CellSelectionEditor"id="CellSelectionEditor"value-type="EnumValue"drop-down-names="None, Single, Multiple"drop-down-values="None, Single, Multiple"></igc-property-editor-property-description></igc-property-editor-panel></div><divclass="container fill"><igc-hierarchical-gridauto-generate="false"id="hGrid"name="hGrid"id="hGrid"primary-key="ID"><igc-columnfield="Artist"header="Artist"data-type="string"resizable="true"></igc-column><igc-columnfield="Photo"header="Photo"data-type="image"min-width="115px"resizable="true"></igc-column><igc-columnfield="Debut"header="Debut"data-type="number"min-width="88px"max-width="230px"resizable="true"></igc-column><igc-columnfield="GrammyNominations"header="Grammy Nominations"data-type="string"resizable="true"></igc-column><igc-columnfield="GrammyAwards"header="Grammy Awards"data-type="string"resizable="true"></igc-column><igc-row-islandchild-data-key="Albums"auto-generate="false"><igc-columnfield="Album"header="Album"data-type="string"resizable="true"></igc-column><igc-columnfield="LaunchDate"header="Launch Date"data-type="date"resizable="true"></igc-column><igc-columnfield="BillboardReview"header="Billboard Review"data-type="string"resizable="true"></igc-column><igc-columnfield="USBillboard200"header="US Billboard 200"data-type="string"resizable="true"></igc-column><igc-row-islandchild-data-key="Songs"auto-generate="false"><igc-columnfield="Number"header="No."data-type="string"resizable="true"></igc-column><igc-columnfield="Title"header="Title"data-type="string"resizable="true"></igc-column><igc-columnfield="Released"header="Released"data-type="string"resizable="true"></igc-column><igc-columnfield="Genre"header="Genre"data-type="string"resizable="true"></igc-column></igc-row-island></igc-row-island><igc-row-islandchild-data-key="Tours"auto-generate="false"><igc-columnfield="Tour"header="Tour"data-type="string"resizable="true"></igc-column><igc-columnfield="StartedOn"header="Started on"data-type="string"resizable="true"></igc-column><igc-columnfield="Location"header="Location"data-type="string"resizable="true"></igc-column><igc-columnfield="Headliner"header="Headliner"data-type="string"resizable="true"></igc-column></igc-row-island></igc-hierarchical-grid></div></div></div><!-- This script is needed only for parcel and it will be excluded for webpack -->
<% if (false) { %><scriptsrc="src/index.ts"></script><% } %>
</body></html>html