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
1Ruben GottliebNorth AmericaOpera32
2David HamillEuropeInternet Explorer86
3Antwan JewessSouth AmericaOpera35
4Roger KulasAfricaSafari39
5Albertha KoeppAsiaOpera15
6Hyman NolanAustraliaInternet Explorer83
7Jermaine MooreNorth AmericaInternet Explorer12
8Dorian HyattAustraliaFirefox52
9Rosalyn HilllAustraliaSafari6
10Austyn KreigerNorth AmericaOpera35
11Miles HudsonSouth AmericaChrome71
12Garry SchillerNorth AmericaSafari15
13Abigayle BeahanAsiaSafari32
14Delpha TillmanAsiaSafari8
15Imogene CristAfricaFirefox84
16Russell GutkowskiSouth AmericaOpera28
17Dalton MonahanAsiaEdge40
18Nola RobelEuropeSafari85
19Johnnie MorissetteAfricaOpera69
20Myrtle KshlerinAsiaInternet Explorer70
21Skylar KihnAfricaFirefox29
22Tiara GulgowskiAntarcticaSafari72
23Monique BalistreriSouth AmericaSafari38
24Albina CummingsSouth AmericaInternet Explorer21
25Cydney ShanahanSouth AmericaChrome68
26Zora CarterAustraliaOpera28
27Jasper KihnSouth AmericaFirefox96
28Sandra HaagNorth AmericaChrome39
29Beulah BuckridgeAfricaChrome12
30Earlene KingAfricaInternet Explorer65
31Emerson MosciskiAsiaFirefox95
32Leslie KeeblerAsiaSafari6
33Llewellyn FayAsiaEdge42
34Caleb OberbrunnerNorth AmericaOpera90
35Ian EmardAntarcticaChrome13
36Vivian WeimannAustraliaFirefox64
37Gregorio KeelingAfricaInternet Explorer36
38Lorenzo QuitzonAsiaFirefox74
39Delpha OsinskiAustraliaInternet Explorer77
40Assunta LemkeAntarcticaFirefox14
41Nelson BeerAsiaOpera10
42Lorine LarkinAustraliaInternet Explorer68
43Violet SchroederSouth AmericaEdge49
44Jeramie JacobsAfricaEdge44
45Allen SchulistAntarcticaInternet Explorer12
46Cecil WizaAfricaInternet Explorer48
47Eulalia WymanAfricaFirefox16
48Nathen DuBuqueNorth AmericaInternet Explorer33
49Margaretta MorarAfricaOpera11
50Roberta SchowalterEuropeInternet Explorer44
51Wyatt ReichelAustraliaChrome30
52Alessia HauckAfricaSafari80
53Letitia MertzAfricaSafari89
54Koby HayesAustraliaChrome34
55Jayce BalistreriEuropeFirefox40
56Adelbert OkunevaEuropeFirefox16
57Breana LueilwitzAsiaSafari48
58Dorcas BalistreriAsiaInternet Explorer7
59Alexis JacobsAntarcticaEdge61
60Lizzie DaughertyNorth AmericaSafari84
#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