계단식 콤보가 있는 React Grid

    Grid의 편집 기능은 Cascading Combobox 구성 요소를 사용할 수 있는 기회를 제공합니다. 이전 IgrCombo에서 값을 선택하면 사용자는 다음 React Combobox 구성 요소 내에서 선택과 관련된 데이터만 받게 됩니다.

    Angular Grid with Cascading Combos Sample Overview

    아래 샘플은 IgrGrid 중첩된 Cascading IgrCombo 구성 요소와 작동하는 방식을 보여줍니다.

    Setup

    열 편집을 활성화하려면 속성이 로 설정되어 있는지 확인하십시오 editable. true

    열 편집이 활성화되면 다음을 IgrCombo 추가할 수 있습니다. 여기에서 하나의 단일 선택 항목만 사용하려면 속성 설정을 singleSelect 사용해야 합니다.

    import { IgrCombo } from 'igniteui-react';
    

    그런 다음 콤보를 사용하여 열 템플릿을 정의해야 합니다.

       <IgrColumn
        field="Country"
        header="Country"
        bodyTemplate={webGridCountryDropDownTemplate}>
        </IgrColumn>
    
        const webGridCountryDropDownTemplate = (ctx: IgrCellTemplateContext) => {
            const rowId = ctx.cell?.id.rowID;
            if (!rowId) return <></>;
            const comboId = `country_${rowId}`;
    
            return (
            <>
                <IgrCombo 
                    data={countries} 
                    ref={getComboRef(comboId)} 
                    onChange={(event: CustomEvent) => { onCountryChange(rowId, event) }} 
                    placeholder="Choose Country..." 
                    valueKey="Country" 
                    displayKey="Country" 
                    singleSelect={true} 
                    name={comboId}>
                </IgrCombo>
            </>
            );
        }
    
    • displayKey- 객체 배열에 필수 - 항목의 텍스트에 사용할 속성을 지정합니다. 값이 displayKey 지정되지 않은 경우 콤보는 지정된 valueKey (있는 경우)를 사용합니다.

    선택 변경을 처리하려면 이벤트가 필요합니다 onChange. 내보낸 이벤트 인수에는 변경 전 선택 항목, 현재 선택 항목 및 추가되거나 제거된 항목에 대한 정보가 포함됩니다. 따라서 이전 콤보의 선택에 따라 값을 필터링합니다.

        const onCountryChange = (rowId: string, event: CustomEvent) => {
            const regionCombo = getComboRef(`region_${rowId}`).current;
            const cityCombo = getComboRef(`city_${rowId}`).current;
            const regions = regions;
            const newValue = event.detail.newValue[0];
            
            if (newValue === undefined) {
                regionCombo.deselect(regionCombo.value);
                regionCombo.disabled = true;
                regionCombo.data = [];
    
                cityCombo.deselect(regionCombo.value);
                cityCombo.disabled = true;
                cityCombo.data = [];
            } else {
                regionCombo.disabled = false;
                regionCombo.data = regions.filter(x => x.Country === newValue);
    
                cityCombo.deselect(cityCombo.value);
                cityCombo.disabled = true;
                cityCombo.data = [];
            }
        }
    

    Known Issues and Limitations

    한정 설명
    콤보 드롭다운 목록은 다른 UI 요소 뒤에 숨겨질 수 있습니다. 그리드에 있는 요소의 스택 순서로 인해 콤보 드롭다운이 머리글, 바닥글 등과 같은 다른 요소 뒤에 숨겨질 수 있습니다.

    React Grid API Members