Documentation

Report Edit

Dynamic Grouping in Grids

Grid control supports multiple levels of grouping and aggregation.

Group by:
 
NameContinentBrowserOSVisits
Emery KuphalAsiaFirefoxMac OS83
Monserrate PollichNorth AmericaInternet ExplorerUbuntu21
Perry LeuschkeAustraliaFirefoxUbuntu46
Jaclyn BodeAsiaEdgeWindows65
Odie DachNorth AmericaEdgeAndroid72
Zelma McGlynnAsiaOperaAndroid20
Eliezer MetzAustraliaInternet ExplorerAndroid44
Robbie BergnaumSouth AmericaChromeUbuntu97
Chanel GusikowskiNorth AmericaEdgeUbuntu25
Branson KemmerAfricaInternet ExplorerMac OS65
Coty RippinNorth AmericaChromeAndroid100
Mikel MarksEuropeOperaWindows48
Broderick HudsonSouth AmericaFirefoxUbuntu28
Sandy HermanAustraliaChromeUbuntu50
Rory WillmsSouth AmericaChromeAndroid64
Evie FunkAustraliaOperaAndroid43
Tyrell MurazikAustraliaSafariUbuntu94
Lois ParisianNorth AmericaOperaAndroid15
Jarod WalterAsiaInternet ExplorerAndroid11
Astrid BartonAustraliaEdgeiOS70
Cleo OberbrunnerAustraliaSafariiOS23
Filiberto BeierAsiaInternet ExploreriOS59
Bernardo ChristiansenAustraliaFirefoxiOS90
Alicia WildermanNorth AmericaChromeiOS31
Colin McGlynnAfricaFirefoxAndroid39
Hunter KossAntarcticaSafariiOS47
Mary KulasAustraliaInternet ExplorerUbuntu30
Peter YostAustraliaOperaAndroid34
Aimee LoweAfricaInternet ExplorerUbuntu50
Jamarcus McDermottEuropeEdgeMac OS99
Noe KochSouth AmericaOperaWindows42
Ray KeelingNorth AmericaInternet ExplorerAndroid27
Freida StokesNorth AmericaSafariUbuntu18
Angelo RoweAsiaFirefoxWindows97
Charlotte ShanahanAustraliaSafariUbuntu92
Lorenzo KilbackAustraliaInternet ExplorerMac OS27
Oma LubowitzEuropeFirefoxiOS52
Leonie HackettAustraliaInternet ExplorerUbuntu2
Eliseo RobelAfricaInternet ExplorerUbuntu78
Monserrate KlockoNorth AmericaFirefoxAndroid68
Roberta SengerSouth AmericaOperaWindows23
Cyrus FlatleyAustraliaFirefoxMac OS14
Hortense StiedemannNorth AmericaOperaiOS6
Preston WelchSouth AmericaSafariWindows27
Amiya ParkerAntarcticaFirefoxiOS48
Carolina SauerAntarcticaSafariAndroid26
Laury MannAfricaEdgeiOS75
Helmer TurnerNorth AmericaOperaMac OS46
Wendell WizaAsiaSafariAndroid93
Claude FadelNorth AmericaChromeAndroid27
Kris WalkerAsiaInternet ExplorerAndroid36
Sabryna WeberAfricaSafariMac OS61
Ricky NikolausAsiaOperaUbuntu80
Jaron McGlynnAfricaOperaAndroid13
Krista BoyerNorth AmericaOperaWindows75
Mariana GrantAfricaOperaMac OS35
Marilie BoyleSouth AmericaInternet ExplorerWindows49
Francisca JakubowskiEuropeSafariAndroid11
Armando LittelAsiaOperaMac OS70
Katlyn BeahanAntarcticaSafariUbuntu29
Israel DavisAsiaOperaWindows35
Joelle RohanAsiaInternet ExplorerMac OS89
Edythe OrnSouth AmericaSafariiOS52
Halle SatterfieldSouth AmericaOperaMac OS19
Lolita MayerSouth AmericaFirefoxiOS73
Kallie HellerSouth AmericaFirefoxUbuntu79
Bobby RomagueraAntarcticaSafariAndroid8
Sadie BrownNorth AmericaOperaAndroid73
Otilia EbertAntarcticaChromeUbuntu72
Cyril WalterSouth AmericaFirefoxAndroid93
Madisen MurazikAsiaChromeAndroid91
Tyrell WillAustraliaFirefoxAndroid59
Claud RoweAustraliaFirefoxMac OS57
Jonathan KrajcikAsiaInternet ExplorerUbuntu21
Delilah ChamplinAfricaFirefoxMac OS94
Grant GreenfelderAsiaOperaWindows87
Marlene ParisianNorth AmericaEdgeAndroid76
Rachelle RiceEuropeSafariUbuntu24
Milan KoeppAsiaInternet ExplorerAndroid54
Lavina RolfsonSouth AmericaInternet ExplorerAndroid3
Henderson BodeAustraliaChromeiOS92
Ofelia SchusterAsiaFirefoxUbuntu33
Leanne EmardNorth AmericaInternet ExplorerUbuntu51
Bartholome HermanNorth AmericaEdgeWindows41
Ismael AndersonSouth AmericaFirefoxAndroid13
Broderick WilkinsonAfricaInternet ExplorerAndroid58
Elias VolkmanAsiaEdgeAndroid60
Garfield HamillAfricaChromeUbuntu47
Marcelina NicolasAsiaChromeAndroid98
Shaylee MacejkovicAfricaEdgeiOS94
Tessie LakinSouth AmericaInternet ExplorerMac OS17
Jamey LednerAfricaEdgeUbuntu57
Linda ShanahanAustraliaEdgeMac OS21
Layne DouglasAsiaFirefoxMac OS73
Lamont SengerEuropeFirefoxiOS91
Jeramie GleasonAntarcticaEdgeiOS81
Cierra JacobiNorth AmericaFirefoxUbuntu21
Lottie RobelSouth AmericaOperaMac OS93
Orin DickiAfricaInternet ExploreriOS59
Hortense BayerAfricaFirefoxiOS88
100 items7 continents6 browsers5 OSes5257
ControllerIndex
<div style="margin-bottom: 10px" ws>
    Group by:
    <LookupField
        records-bind="$page.grouping"
        options-bind="$page.groupableFields"
        multiple={true}
    />
</div>

<Grid
    records-bind='$page.records'
    style={{width: "100%"}}
    groupingParams-bind="$page.grouping"
    onGetGrouping={(groupingParams) => [
        {key: {}, showFooter: true},
        ...(groupingParams || []).map(x => x.id)
    ]}
    columns={[{
        header: 'Name',
        field: 'fullName',
        sortable: true,
        aggregate: 'count',
        footer: {expr: '({$group.$level} > 1 ? {$group.$name:s|TOTAL} + " - " : "") + {$group.fullName} + " " + {$group.fullName:plural;item}'}
    }, {
        header: 'Continent',
        field: 'continent',
        sortable: true,
        aggregate: 'distinct',
        aggregateAlias: 'continents',
        footer: {tpl: '{$group.continents} {$group.continents:plural;continent}'}
    }, {
        header: 'Browser',
        field: 'browser',
        sortable: true,
        aggregate: 'distinct',
        aggregateAlias: 'browsers',
        footer: {tpl: '{$group.browsers} {$group.browsers:plural;browser}'}
    }, {
        header: 'OS',
        field: 'os',
        sortable: true,
        aggregate: 'distinct',
        aggregateAlias: 'oss',
        footer: {tpl: '{$group.oss} {$group.oss:plural;OS}'}
    }, {
        header: 'Visits',
        field: 'visits',
        sortable: true,
        aggregate: "sum",
        align: "right"
    }]}
/>
Copied!Cx Fiddle