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
1Bryana TorphyAfricaInternet Explorer59
2Mazie KleinSouth AmericaSafari75
3Ahmad WymanNorth AmericaChrome75
4Eryn FayEuropeFirefox28
5Rosina PacochaAntarcticaFirefox63
6Cortney BernierSouth AmericaFirefox43
7Shanny RomagueraAsiaInternet Explorer40
8Modesta MurphyAfricaOpera28
9Grace WizaAustraliaOpera23
10Roxane KautzerAustraliaOpera55
11Jeff GerlachNorth AmericaEdge3
12Veronica RoweAsiaFirefox21
13Karson NicolasEuropeFirefox12
14Jerrold LindSouth AmericaInternet Explorer33
15Arjun SchroederAsiaSafari57
16Cordia SchadenAsiaOpera69
17Magdalen HeidenreichNorth AmericaInternet Explorer37
18Niko VolkmanAustraliaOpera84
19Flavie BauchAfricaChrome59
20Sterling BuckridgeEuropeInternet Explorer63
21Andrew GerlachAsiaOpera41
22Stanford MarksSouth AmericaEdge31
23Heidi RempelNorth AmericaInternet Explorer31
24Dasia QuitzonAsiaSafari46
25Eusebio BrakusAfricaSafari45
26Tressie VandervortSouth AmericaEdge92
27Raleigh HahnSouth AmericaSafari10
28Mohammad HermistonAsiaSafari37
29Reanna HeathcoteNorth AmericaChrome19
30Zella HodkiewiczNorth AmericaOpera3
31Chester KiehnEuropeSafari7
32Rey MayertAustraliaSafari62
33Rocio GorczanyNorth AmericaInternet Explorer33
34Missouri KunzeAustraliaSafari31
35Rodrick CroninAntarcticaChrome91
36Grayson BaileyNorth AmericaOpera28
37Shawna DickinsonAfricaOpera20
38Tyrese JakubowskiAustraliaFirefox12
39Dedrick HoegerAsiaFirefox60
40Ethel GrahamAfricaEdge24
41Ashton RobelNorth AmericaChrome11
42Gretchen HettingerEuropeChrome37
43Shany JonesAfricaSafari14
44Kieran JerdeSouth AmericaFirefox15
45Watson SipesAfricaInternet Explorer13
46Jeffry WildermanEuropeInternet Explorer76
47Webster KovacekAfricaEdge61
48Camille HilllAustraliaChrome72
49Floy RyanAfricaInternet Explorer67
50Christine StromanSouth AmericaFirefox37
51Keely WilliamsonNorth AmericaFirefox15
52Kelsi TurnerAntarcticaOpera84
53Chanelle HickleSouth AmericaChrome63
54Cletus HaagAfricaFirefox91
55Wendell KuhicEuropeSafari48
56Barbara ZiemannSouth AmericaOpera28
57Modesto BaumbachSouth AmericaFirefox30
58Vallie MaggioAustraliaSafari46
59Gilberto JacobsNorth AmericaEdge5
60Kathlyn PagacAntarcticaOpera96
#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