Documentation

Report Edit

Grid with Row Expanding

Grid supports rendering rows in multiple lines. Lines can be shown or hidden which is convenient for implementing drill-downs and on demand content. Click on the search icon to expand the grid header with search controls. Click on the arrows to expand individual rows. Please note that search is not implemented in this example.

NameContinentBrowserOSVisits
Victor FadelAsiaInternet ExplorerUbuntu22
Tyrell WeissnatSouth AmericaEdgeUbuntu20
Stanford RobertsSouth AmericaFirefoxUbuntu41
Icie MedhurstAsiaFirefoxWindows74
Alayna VonAsiaSafariWindows60
Nellie LeschAfricaSafariMac OS84
Irving SchowalterNorth AmericaOperaMac OS20
Tremayne LarsonSouth AmericaOperaAndroid62
Cristal FerryAntarcticaOperaiOS88
Yadira StreichAustraliaFirefoxAndroid89
Joshua EbertSouth AmericaEdgeAndroid29
Michael SchroederEuropeInternet ExplorerMac OS94
Lloyd CassinAustraliaEdgeWindows46
Christy StehrAustraliaSafariWindows11
Cristal GrimesAustraliaOperaUbuntu9
Noelia SchadenAustraliaSafariAndroid45
Cleta KuphalSouth AmericaChromeMac OS37
Larue OberbrunnerAustraliaChromeMac OS31
Bridget GulgowskiAustraliaInternet ExplorerWindows78
Karlee BalistreriAfricaFirefoxAndroid51
<Grid
    records-bind="$page.records"
    lockColumnWidths
    cached
    row={{
        style: {
            background: {expr: "{$record.showDescription} ? '#fff7e6' : null"}
        },
        line1: {
            columns: [
                {
                    header: "Name",
                    field: "fullName",
                    sortable: true
                },
                {
                    header: "Continent",
                    field: "continent",
                    sortable: true
                },
                {
                    header: "Browser",
                    field: "browser",
                    sortable: true
                },
                {
                    header: "OS",
                    field: "os",
                    sortable: true
                },
                {
                    header: "Visits",
                    field: "visits",
                    sortable: true,
                    align: "right"
                }, {
                    header: {
                        items: <cx>
                            <cx>
                                <Button
                                    mod="hollow"
                                    icon="search"
                                    onClick={(e, {store}) => {
                                        store.toggle('$page.showGridFilter');
                                    }}
                                />
                            </cx>
                        </cx>
                    },
                    align: "center",
                    items: <cx>
                        <cx>
                            <Button
                                mod="hollow"
                                icon="drop-down"
                                onClick={(e, {store}) => {
                                    store.toggle('$record.showDescription');
                                }}
                            />
                        </cx>
                    </cx>
                }
            ]
        },
        line2: {
            showHeader: { expr: '!!{$page.showGridFilter}' },
            visible: false,
            columns: [
                {
                    header: {
                        items: <cx>
                            <TextField
                                value-bind="$page.filter.fullName"
                                style="width: 100%"
                                autoFocus
                            />
                        </cx>
                    }
                },
                {
                    header: {
                        items: <cx>
                            <TextField
                                value-bind="$page.filter.continent"
                                style="width: 100%"
                            />
                        </cx>
                    }
                },
                {
                    header: {
                        items: <cx>
                            <TextField
                                value-bind="$page.filter.browser"
                                style="width: 100%"
                            />
                        </cx>
                    }
                },
                {
                    header: {
                        items: <cx>
                            <TextField
                                value-bind="$page.filter.os"
                                style="width: 100%"
                            />
                        </cx>
                    }
                },
                {
                    header: {
                        items: <cx>
                            <NumberField
                                value-bind="$page.filter.visits"
                                style="width: 100%"
                                inputStyle="text-align: right"
                            />
                        </cx>
                    }
                }, {
                    header: {
                        align: 'center',
                        items: <cx>
                            <cx>
                                <Button
                                    mod="hollow"
                                    icon="close"
                                    onClick={(e, {store}) => {
                                        store.toggle('$page.showGridFilter');
                                    }}
                                />
                            </cx>
                        </cx>
                    }
                }
            ]
        },
        line3: {
            visible: {expr: "{$record.showDescription}"},
            columns: [{
                colSpan: 1000,
                style: 'border-top-color: rgba(0, 0, 0, 0.05)',
                items: <cx>
                    <Svg style="width:100%px; height:400px;">
                        <Chart offset="20 -10 -40 40"
                               axes={{x: {type: NumericAxis}, y: {type: NumericAxis, vertical: true}}}>
                            <Gridlines/>
                            <LineGraph data-bind="$record.points" colorIndex={8}/>
                        </Chart>
                    </Svg>
                </cx>
            }]
        }
    }}
/>
Copied!Cx Fiddle