Grouping data
Organize and group data within your table for improved readability and structure.
Example
Id
Name
Category
Price Retail
Status
1
Luxurious Bamboo Tuna
Clothing
266.92
discontinued
2
Fantastic Bronze Table
Sports
124.8
low-stock
3
Handcrafted Concrete Cheese
Home & Garden
480.58
in-stock
4
Ergonomic Steel Cheese
Clothing
127.56
low-stock
5
Sleek Concrete Hat
Sports
77.61
in-stock
6
Modern Gold Salad
Home & Garden
321.32
in-stock
7
Gorgeous Aluminum Cheese
Clothing
41.82
low-stock
8
Handmade Plastic Shirt
Sports
487.32
low-stock
9
Ergonomic Wooden Keyboard
Sports
485.29
in-stock
10
Frozen Bamboo Soap
Electronics
165.47
in-stock
Per page:
Page 1 of 100
Showing
1
to
10
of 1000 rows
{ "activeGroups": [] }
{#each datagrid.columns.getLeafColumnsInOrder() as column}
{@render LeafHeader(column)}
{/each}
{#each datagrid.rows.getPaginatedRows() as row}
{#if !row.isGroupRow()}
{#each datagrid.columns.getLeafColumnsInOrder() as column}
{@render RenderBodyCell(column, row)}
{/each}
{:else}
{#each datagrid.columns.getLeafColumnsInOrder() as column, columnIndex (column.columnId)}
{@render RenderGroupCell(column, row)}
{/each}
{/if}
{/each}
{JSON.stringify( { activeGroups: datagrid.features.grouping.activeGroups }, null, 2 )}
{getCellContent(column, row.original)}
{/snippet}
{#snippet RenderGroupCell(column: LeafColumn, row: GridGroupRow)}
{#if column.columnId == row.groupKey}
{@render GroupCellHeaderSnippet(column, row)}
{:else if row.aggregations.some((agg) => agg.columnId === column.columnId)}
{@render GroupCellAggregationSnippet(row, column)}
{/if}
{/snippet}
{#snippet GroupCellHeaderSnippet(column: LeafColumn, row: GridGroupRow)}
{/snippet}
{#snippet GroupCellAggregationSnippet(row: GridGroupRow, column: LeafColumn)}
{#each row.aggregations.filter((agg) => agg.columnId === column.columnId) as aggregation}
{/snippet}
{#snippet LeafHeader(column: LeafColumn)}
{#if column.isVisible()}
{aggregation.type}: {#if aggregation.type === 'percentChange'} {aggregation.value.toFixed(2)}% {:else if typeof aggregation.value === 'number'} {aggregation.value.toLocaleString()} {:else} {aggregation.value} {/if}
{/each}
{column.header}