You're viewing the legacy site. Visit cxjs.io/docs for the latest documentation. Legacy site. Visit cxjs.io/docs for new docs.

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
1Alaina CorwinNorth AmericaFirefox63
2Savannah NienowAfricaFirefox75
3Nathanial TreutelAsiaEdge76
4Gracie WhiteAustraliaSafari36
5Maia FraneckiAsiaOpera35
6Keshawn HeaneySouth AmericaChrome59
7Kailee GrantEuropeOpera82
8Joel CorkerySouth AmericaEdge93
9Caterina GleasonNorth AmericaEdge65
10Darrion LuettgenSouth AmericaOpera80
11Jaycee BraunAntarcticaFirefox27
12Margarett WestSouth AmericaSafari22
13Milton KutchAustraliaFirefox83
14Harmony KochAustraliaSafari77
15Peggie ConroyAustraliaSafari33
16Trace LockmanNorth AmericaFirefox21
17Petra JenkinsAustraliaEdge37
18Josue WintheiserSouth AmericaChrome44
19Rosalyn HegmannNorth AmericaFirefox83
20Joelle HegmannAfricaSafari65
21Neha UllrichAustraliaChrome62
22Taylor AbernathyNorth AmericaInternet Explorer13
23Amanda SmithAsiaOpera4
24Karlee LynchSouth AmericaOpera31
25Itzel NienowSouth AmericaOpera95
26Pansy DouglasSouth AmericaSafari37
27Emiliano QuigleyAntarcticaSafari39
28Mattie WilkinsonNorth AmericaInternet Explorer42
29Stephon WaelchiNorth AmericaSafari90
30Gene JohnsNorth AmericaSafari62
31Annetta BatzAntarcticaFirefox20
32Verlie SchambergerAfricaInternet Explorer36
33Maryam KeelingNorth AmericaSafari67
34Elinor BergstromAustraliaSafari85
35Hector HomenickEuropeInternet Explorer21
36Greg RusselAntarcticaSafari50
37Reese KemmerAsiaFirefox66
38Marcel JohnsAustraliaFirefox43
39Winona MertzSouth AmericaFirefox66
40Xavier BahringerAustraliaFirefox22
41Isac BergstromSouth AmericaSafari2
42Yadira BrakusAfricaSafari50
43Luz CronaAfricaInternet Explorer60
44Rosario BodeAsiaOpera42
45Alexanne StokesEuropeSafari44
46Blaise HoweNorth AmericaEdge73
47Quentin MacejkovicAfricaFirefox93
48Jaden DouglasAsiaInternet Explorer25
49Gilberto CartwrightAfricaSafari71
50Bette WintheiserAsiaSafari85
51Alanna LegrosAustraliaOpera10
52Zackary SmithAsiaChrome81
53Phyllis OrnSouth AmericaInternet Explorer1
54Dan SimonisSouth AmericaInternet Explorer44
55Millie HuelsAfricaFirefox84
56Jennifer VandervortNorth AmericaInternet Explorer97
57Matilde WildermanSouth AmericaFirefox40
58Alisha BatzAfricaSafari82
59Abdiel PadbergAsiaEdge59
60Antonia GutmannAustraliaSafari37
#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