Documentation

Report Edit

Infinite Grid Scrolling

Infinite scrolling is a technique of dynamically loading additional data based on the scroll position. Grids support infinite by setting the infinite flag and implementing the onFetchRecords callback which is responsible for fetching data based on current the visible page and active sorting and filtering parameters. Fetch result should be an object containing the records property containing an array of records; The lastPage flag should be set if there is no remaining data. Alternatively, totalRecordCount can be used to indicate total number of records. If necessary, the fetch result should include state to pass data such as pagination tokens or cursor positions between fetch results.

#NameContinentBrowserVisits
1Nichole AuerAsiaInternet Explorer19
2Alda LittleAsiaFirefox44
3Marian BalistreriAntarcticaSafari74
4Delbert ColeAustraliaFirefox25
5Shayna LakinSouth AmericaSafari30
6Concepcion TillmanNorth AmericaOpera74
7Libbie RunolfsdottirAustraliaSafari52
8Dwight DietrichAfricaFirefox25
9Kelley ReichertNorth AmericaFirefox97
10Mallory BogisichAustraliaSafari92
11Millie DickinsonAfricaInternet Explorer16
12Shanelle LarsonEuropeFirefox30
13Juliet KuhicAntarcticaFirefox66
14Ardith PaucekAustraliaOpera35
15Iliana BergstromAsiaEdge7
16Carmella WuckertSouth AmericaOpera6
17Urban CrooksNorth AmericaOpera35
18Roberto WalkerAntarcticaInternet Explorer94
19Mckayla SchambergerSouth AmericaSafari34
20Clair StarkAsiaSafari77
21Mylene HickleNorth AmericaSafari33
22Giles OrnNorth AmericaChrome2
23Ciara KrajcikSouth AmericaFirefox15
24Katherine TurcotteNorth AmericaSafari67
25Easton MonahanEuropeChrome95
26Rylan ShieldsAfricaOpera63
27Hattie LeannonAntarcticaInternet Explorer65
28Asia NolanAustraliaOpera72
29Clay StammAfricaInternet Explorer5
30Dakota RauEuropeInternet Explorer61
31Janick KuhicNorth AmericaInternet Explorer21
32Rae HoegerSouth AmericaFirefox16
33Nathen HalvorsonAustraliaSafari49
34Rebeca PowlowskiAntarcticaSafari33
35Cale HeathcoteNorth AmericaInternet Explorer11
36Freda GerholdAsiaEdge82
37Leann KeelingAfricaEdge12
38Kelsie GerholdAustraliaOpera85
39Samara RosenbaumAfricaInternet Explorer86
40Nora KeeblerSouth AmericaOpera8
41Adelle KrisSouth AmericaInternet Explorer30
42Aubree TurcotteEuropeOpera4
43Michele FaheyAustraliaChrome34
44Hobart MacejkovicNorth AmericaInternet Explorer88
45Delpha MannNorth AmericaOpera7
46Mafalda RutherfordNorth AmericaFirefox2
47Jaycee VonSouth AmericaInternet Explorer85
48Travon RogahnAustraliaInternet Explorer59
49Eldred CollierNorth AmericaSafari23
50Audreanne KoelpinAfricaInternet Explorer44
51Osborne PriceNorth AmericaEdge82
52Kendall McGlynnAfricaSafari44
53Kristoffer OrnSouth AmericaEdge54
54Evans SchneiderAsiaSafari22
55Josefa RunolfsdottirAfricaChrome30
56Eliane ParisianEuropeFirefox17
57Stacy MillerNorth AmericaInternet Explorer76
58Adrianna MohrAsiaInternet Explorer17
59Erling SchulistNorth AmericaChrome70
60Rhoda BodeSouth AmericaFirefox24
#NameContinentBrowserVisits
InfiniteScroll Grid
<Grid
    infinite
    style="height: 800px"
    lockColumnWidths
    cached
    keyField="question_id"
    columns={[
        {header: "#", field: "id", sortable: true},
        {header: "Name", field: "fullName", sortable: true},
        {header: "Continent", field: "continent", sortable: true},
        {header: "Browser", field: "browser", sortable: true},
        {header: "Visits", field: "visits", sortable: true, align: "right"}
    ]}
    selection={{type: KeySelection, bind: "$page.selection", keyField: "id"}}
    onFetchRecords={({page, pageSize}) => new Promise(resolve => {
        setTimeout(() => {
            let records = [];
            for (let i = 0; i < pageSize; i++)
                records.push({
                    id: (page - 1) * pageSize + i + 1,
                    fullName: casual.full_name,
                    continent: casual.continent,
                    browser: casual.browser,
                    title: casual.full_name,
                    visits: casual.integer(1, 100)
                });
            resolve({
                records,
                totalRecordCount: 100000
            });
        }, 100);
    })}
/>
Copied!Cx Fiddle