Table
A data table that stays responsive over large result sets. Bound to a named query it is the standard way to put database rows on a screen.


Reach for it when you need:
- Order lists, batch records, downtime logs
- Any query result with more than a few rows
Component name: Table · Category: Display
In the palette: Data table that stays fast over large result sets
Properties
Any property can be bound to a tag, another component's property, or a query.
| Property | Type | Default | Description |
|---|---|---|---|
data | array | [{"id":1,"name":{"value":"Item 1","fontWeight":"bold"},"stat… (truncated) | Array of row objects. A cell can be a plain value OR an object for per-cell styling: { value, color, backgroundColor, fontSize, fontWeight, fontStyle, textDecoration, fontFamily }. A row-level 'backgroundColor' colors the whole row. Example: { status: { value: "Overdue", color: "#fff", backgroundColor: "#dc2626", textDecoration: "underline" } } |
columns | array | [] | Custom column definitions and overrides. |
↳ columns.id | string | "" | Must match the key name in your data object. |
↳ columns.header | object | {"headerTitle":"","alignedHeader":"center","backgroundColor"… (truncated) | — |
↳ columns.header.headerTitle | string | "" | Display label for the column header. |
↳ columns.header.alignedHeader | enum | center | Options: left · center · right. |
↳ columns.header.backgroundColor | color | "" | — |
↳ columns.header.color | color | "" | — |
↳ columns.header.fontSize | number | 0 | px (0 = inherit) |
↳ columns.header.fontWeight | enum | "" | Options: `` · normal · bold · bolder · lighter. |
↳ columns.header.fontStyle | enum | "" | Options: `` · normal · italic. |
↳ columns.header.textDecoration | enum | "" | Options: `` · none · underline · line-through · overline. |
↳ columns.header.fontFamily | string | "" | — |
↳ columns.width | number | 150 | — |
↳ columns.enableHeaderResize | boolean | false | — |
↳ columns.enableSort | boolean | false | — |
↳ columns.sort | enum | none | Options: none · asc · desc. |
↳ columns.rows | object | {"alignedRows":"left","backgroundColor":"","color":"","fontS… (truncated) | Default styling for this column's body cells. A per-cell object in the data ({ value, color, ... }) overrides these. |
↳ columns.rows.alignedRows | enum | left | Options: left · center · right. |
↳ columns.rows.backgroundColor | color | "" | — |
↳ columns.rows.color | color | "" | — |
↳ columns.rows.fontSize | number | 0 | px (0 = inherit) |
↳ columns.rows.fontWeight | enum | "" | Options: `` · normal · bold · bolder · lighter. |
↳ columns.rows.fontStyle | enum | "" | Options: `` · normal · italic. |
↳ columns.rows.textDecoration | enum | "" | Options: `` · none · underline · line-through · overline. |
↳ columns.rows.fontFamily | string | "" | — |
↳ columns.aggregation | enum | "" | Summarise this column. Shows on each group row (when Grouping is on) AND in the grand-total row (when Aggregation is on) — the two are independent, so a total needs no grouping. sum/mean/median/min/max keep the column's own units and are formatted with its dataType; count/uniqueCount are row counts; extent is a min-max pair; unique lists the distinct values. Options: `` · sum · mean · median · min · max · extent · count · uniqueCount · unique · first · last. |
↳ columns.spanRows | boolean | false | Merge this column's vertically adjacent cells when they hold the same value. Needs the table-level cellSpanning.enabled switched on too — both, or nothing happens. The merge follows the rows AS DISPLAYED, so sorting by this column is usually what makes it useful, and it re-forms by itself after a sort, filter or page change. |
↳ columns.dataType | object | {"type":"string","format":""} | — |
↳ columns.dataType.type | enum | string | Options: string · number · boolean · datetime · view. |
↳ columns.dataType.format | format | "" | String: uppercase/lowercase/capitalize. Number: #,###.##. Datetime: yyyy-MM-dd, dd/MM/yyyy, MMM dd, yyyy, HH:mm:ss |
↳ columns.dataType.viewPath | view | "" | type=view: the user-created view to render each cell with |
↳ columns.dataType.valueParam | string | "" | type=view: the name of that view's param that receives the cell value |
freezeColumns | array | [] | List of column IDs to fix to the left side. |
↳ freezeColumns.id | string | "" | — |
↳ freezeColumns.position | enum | left | Options: left · right. |
enableReorder | boolean | false | Let users drag column headers at runtime to reorder them. Pinned columns (row selection checkbox, edit/delete actions, frozen columns) stay in place — only the center group is reorderable. |
groups | array | [] | Column HEADER nesting — stacks banner rows above your columns and leaves the rows untouched. (To fold the ROWS themselves into collapsible buckets, use rowGrouping instead.) A group holds column IDs in columns and/or further groups in groups, so headers nest as deep as you like; each level adds a header row, and a shallow branch spans down to the leaf row on its own. |
↳ groups.header | string | Group | — |
↳ groups.columns | array | [] | Leaf column IDs directly under this group. |
↳ groups.columns.id | string | "" | — |
↳ groups.alignHeader | enum | center | Options: left · center · right. |
↳ groups.backgroundColor | color | "" | — |
↳ groups.groups | array | [] | Groups nested inside this one. Each level adds a header row. |
↳ groups.groups.header | string | Group | — |
↳ groups.groups.columns | array | [] | Leaf column IDs directly under this group. |
↳ groups.groups.columns.id | string | "" | — |
↳ groups.groups.alignHeader | enum | center | Options: left · center · right. |
↳ groups.groups.backgroundColor | color | "" | — |
↳ groups.groups.groups | array | [] | Groups nested inside this one. Each level adds a header row. |
↳ groups.groups.groups.header | string | Group | — |
↳ groups.groups.groups.columns | array | [] | Leaf column IDs directly under this group. |
↳ groups.groups.groups.columns.id | string | "" | — |
↳ groups.groups.groups.alignHeader | enum | center | Options: left · center · right. |
↳ groups.groups.groups.backgroundColor | color | "" | — |
↳ groups.groups.groups.groups | array | [] | Groups nested inside this one. Each level adds a header row. |
↳ groups.groups.groups.groups.header | string | Group | — |
↳ groups.groups.groups.groups.columns | array | [] | Leaf column IDs directly under this group. |
↳ groups.groups.groups.groups.columns.id | string | "" | — |