0

I was using kendo-react for my project. Virtual scrolling on API response works prefect. But I also wanted to use selection in same table. I was trying some solution but that didn't work for me.

What I want is select single row and select all data will working fine with virtual scroll.

This is my code, you can refer it.

    const [selectedState, setSelectedState] = React.useState({});

      const onSelectionChange = React.useCallback(
            (event) => {
                const newSelectedState = getSelectedState({
                    event,
                    selectedState: selectedState,
                    dataItemKey: DATA_ITEM_KEY,
                });
                // console.log("event", event, newSelectedState);
                console.log("event", newSelectedState);
                setSelectedState(newSelectedState);
            },
            [selectedState]
        );


return(
    <Grid
            style={{ height: "60vh" }}
            // data={dataState.slice(page.skip, page.skip + pageSize)}
            data={dataState?.map((item) => ({
                ...item,
                [SELECTED_FIELD]: selectedState[idGetter(item)],
            }))}
            pageSize={pageSize}
            total={total} skip={page.skip}
            scrollable={'virtual'}
            rowHeight={50}
            onPageChange={pageChange} cellRender={loadingCell}
            dataItemKey={DATA_ITEM_KEY}
            selectedField={SELECTED_FIELD}
            selectable={{
                enabled: true,
                drag: false,
                cell: false,
                mode: "multiple",
            }}
            onSelectionChange={onSelectionChange}
            onHeaderSelectionChange={onHeaderSelectionChange}
        >
            <GridColumn
                locked={true}
                field={SELECTED_FIELD}
                width="50"
                headerSelectionValue={
                    dataState.length === 0 ? false : dataState.findIndex((item) => !selectedState[idGetter(item)]) === -1
                }
            />
            <GridColumn
                field="Action"
                width="102"
                locked={true}
                cell={MyCustomCell}
            />
            <GridColumn field="Index" title="Index" width="75" />
            <GridColumn field="stone_id" title="Stone ID" width="75" />
            <GridColumn field="cert_no" title="Certificate No" width="105" />

        </Grid>
)

0 Answers0