Skip to main content
A TABLE has two separate arrays: data contains records, and definition describes their visible columns. A column’s field selects a property from each record.
This source displays two selectable records. The TABLE ID is orders; each row is identified by its own orderId. These are independent identities.

Configuration

rowKey values must be unique strings or finite numbers. A refresh keeps only keys still present in the returned dataset. Selection state is available at $widget.selection.orders.keys or through a selection binding.

Column types

field, headerName and type are required strings. Keep field equal to a property in the returned records. A null or invalid date is displayed as missing, not as a valid date. Assistant cards accept TEXT, NUMBER, DATE and BOOLEAN columns over flat scalar records. JSON is a dashboard TABLE capability; it is not accepted by the Assistant artifact contract.

Toolbar buttons

Each toolbar button needs id and label. It can declare disabled, requiresSelection and on.click. With requiresSelection: true, it stays disabled until at least one record is selected. See selection and drill-down example for bindings and required targets.

Data size and filters

Filtering and sorting a Custom Widget TABLE operates on returned browser data. It does not fetch the next server page, and its live filter state is not saved as a built-in dashboard grid preference. Bound the source query and label a partial dataset. Use a built-in Database Table or View panel when you need its full workspace grid behavior.
Last modified on November 8, 2026