WebRADDocumentationExplore WebRAD ↗
WEBRAD / TECHNICAL REFERENCE

Data Grid

API-bound table with five cell types.

WebDataGridStandardVisual1 events

Quick start

Add DataGrid1 in the Designer. Use the example in a page method.

DataGrid1 · event
DataGrid1.configuration = {
  ...DataGrid1.configuration,
  showHeader: true,
  stickyHeader: true,
  stripedRows: true,
  wrapText: true,
  emptyMessage: 'No records',
};
// Configure the source and columns in the editor.
await ApiClient1.execute('Load');
  • Open the grid editor and select API Client, operation, and response list.
  • listPath and fieldPath use JSON Pointer, such as /data and /name.
  • Cells accept text, image, button, checkbox, or toggle; configure width, alignment, and row height.
  • OnCellClick provides rowIndex, columnIndex, column, value, and getValue() to read another row field.
  • Headers and footers can be sticky. Configure emptyMessage for empty lists.

More examples

Complete configuration and API binding
Complete configuration and API binding
// Configure Load in API Client with a list at /data.
const operation = ApiClient1.operations.find(item => item.name === 'Load');
if (!operation) throw new Error('Configure the Load operation in the Designer.');
DataGrid1.configuration = {
  schemaVersion: 1,
  apiClientId: ApiClient1.id,
  operationId: operation.id,
  listPath: '/data',
  columnCount: 5,
  showHeader: true,
  stickyHeader: true,
  showFooter: true,
  stickyFooter: false,
  rowHeightMode: 'dynamic',
  fixedRowHeight: 40,
  minRowHeight: 32,
  maxRowHeight: null,
  cellPaddingHorizontal: 12,
  cellPaddingVertical: 8,
  wrapText: true,
  stripedRows: true,
  showHorizontalLines: true,
  showVerticalLines: false,
  emptyMessage: 'No customers found',
  columns: (['text', 'image', 'button', 'checkbox', 'toggle'] as const).map((cellKind, index) => ({
    id: 'column-' + index,
    header: ['Name', 'Photo', 'Action', 'Selected', 'Active'][index] ?? '',
    fieldPath: ['/name', '/avatarUrl', '/id', '/selected', '/active'][index] ?? '',
    cellKind,
    fixedCaption: cellKind === 'button' ? 'Open' : '',
    buttonIcon: null,
    footer: '',
    widthMode: 'dynamic',
    width: 140,
    minWidth: 80,
    maxWidth: null,
    flex: 1,
    headerAlign: 'start',
    cellAlign: cellKind === 'text' ? 'start' : 'center',
  })),
};
DataGrid1.bindApiClient(ApiClient1);
await ApiClient1.execute('Load');

Inspector properties

Component options and defaults. Fields without runtime access are configured in the Inspector.

Property / sourceType and optionsDefaultRuntime access
nameName · Identitystring—name
xLeft · Size & positionnumber0x
yTop · Size & positionnumber0y
widthWidth · Size & positionnumber640width
heightHeight · Size & positionnumber320height
itemWidthResponsive width · Responsive sizeFit content grows the item to its widest rendered child and preserves child intrinsic widths; minimum and maximum width remain limits.enumfixed stretch fit-content"fixed"Inspector / configuration
itemHeightResponsive height · Responsive sizeFit content grows the item to its lowest rendered child and preserves child intrinsic heights; minimum and maximum height remain limits.enumfixed stretch fit-content"fixed"Inspector / configuration
itemMinWidthMinimum width · Responsive sizenumber0Inspector / configuration
itemMaxWidthMaximum width · Responsive sizenumbernullInspector / configuration
itemMinHeightMinimum height · Responsive sizenumber0Inspector / configuration
itemMaxHeightMaximum height · Responsive sizenumbernullInspector / configuration
itemGrowGrow · Responsive sizenumber0Inspector / configuration
itemShrinkShrink · Responsive sizeAllows fixed and stretch flow items to yield space. Fit-content keeps its intrinsic size so its children are not compressed.booleantrueInspector / configuration
itemAlignSelfItem alignment · Responsive sizeCross-axis alignment for this item in a row or column. Auto inherits the parent alignment; responsive cross-axis stretch retains its sizing behavior.enumauto start center end stretch"auto"Inspector / configuration
itemHorizontalAnchorHorizontal anchor · Anchors & offsetsenumstart center end stretch"start"Inspector / configuration
itemVerticalAnchorVertical anchor · Anchors & offsetsenumstart center end stretch"start"Inspector / configuration
itemLeftLeft inset · Anchors & offsetsnumber0Inspector / configuration
itemRightRight inset · Anchors & offsetsnumber0Inspector / configuration
itemTopTop inset · Anchors & offsetsnumber0Inspector / configuration
itemBottomBottom inset · Anchors & offsetsnumber0Inspector / configuration
marginMargin · SpacingOuter spacing on all four sides, in pixels. Row and column layouts include this spacing between components.number0margin
marginTopMargin top · SpacingOuter spacing on this side, in pixels. Overrides the shared Margin value.number0Derived from saved propertiesmarginTop
marginRightMargin right · SpacingOuter spacing on this side, in pixels. Overrides the shared Margin value.number0Derived from saved propertiesmarginRight
marginBottomMargin bottom · SpacingOuter spacing on this side, in pixels. Overrides the shared Margin value.number0Derived from saved propertiesmarginBottom
marginLeftMargin left · SpacingOuter spacing on this side, in pixels. Overrides the shared Margin value.number0Derived from saved propertiesmarginLeft
visibleVisible · Behaviorbooleantruevisible
collapseWhenHiddenCollapse when hidden · BehaviorRemoves the component from the layout while it is not visible.booleantruecollapseWhenHidden
enabledEnabled · Behaviorbooleantrueenabled
dataGridConfigData source and columns · Data GridConfigure the source, columns, responsive widths, row sizing, and cell layout in the Data Grid editor.data-grid-configEditor: data-grid-configurator{"schemaVersion":2,"apiClientId":null,"operationId":null,"listPath":"","columnCount":3,"showHeader":true,"stickyHeader":true,"showFooter":false,"stickyFooter":true,"rowHeightMode":"dynamic","fixedRowHeight":40,"minRowHeight":36,"maxRowHeight":null,"cellPaddingHorizontal":10,"cellPaddingVertical":8,"wrapText":false,"stripedRows":false,"showHorizontalLines":true,"showVerticalLines":false,"emptyMessage":"No data","columns":[{"id":"column-1","header":"Column 1","fieldPath":"","cellKind":"text","fixedCaption":"","buttonIcon":null,"footer":"","widthMode":"dynamic","width":180,"minWidth":96,"maxWidth":null,"flex":1,"headerAlign":"start","cellAlign":"start"},{"id":"column-2","header":"Column 2","fieldPath":"","cellKind":"text","fixedCaption":"","buttonIcon":null,"footer":"","widthMode":"dynamic","width":180,"minWidth":96,"maxWidth":null,"flex":1,"headerAlign":"start","cellAlign":"start"},{"id":"column-3","header":"Column 3","fieldPath":"","cellKind":"text","fixedCaption":"","buttonIcon":null,"footer":"","widthMode":"dynamic","width":180,"minWidth":96,"maxWidth":null,"flex":1,"headerAlign":"start","cellAlign":"start"}]}dataGridConfig
currentRowBindingsCurrent row · DataBind writable visual values to fields of this repeated row.current-row-bindingsEditor: current-row-bindings[]currentRowBindings

API in code

MemberSignatureAccess
configurationconfiguration: WebDataGridConfiguration;Read and write
dataGridConfigdataGridConfig: WebDataGridConfiguration;Read and write

bindApiClient

method
bindApiClient(apiClient: WebApiClient | null): void;
Example
DataGrid1.bindApiClient
DataGrid1.bindApiClient(ApiClient1);
Inherited members (27)
MemberSignatureAccess
currentRowBindingscurrentRowBindings: readonly WebCurrentRowBinding[];Read and write
elementreadonly element: TElement;Read-only
idreadonly id: string;Read-only
namereadonly name: string;Read-only
visiblevisible: boolean;Read and write
collapseWhenHiddencollapseWhenHidden: boolean;Read and write
enabledenabled: boolean;Read and write
xx: number;Read and write
yy: number;Read and write
widthwidth: number;Read and write
heightheight: number;Read and write
marginOuter spacing on all four sides, in pixels.margin: number;Read and write
marginTopmarginTop: number;Read and write
marginRightmarginRight: number;Read and write
marginBottommarginBottom: number;Read and write
marginLeftmarginLeft: number;Read and write
alignSelfalignSelf: RuntimeLayoutAlignSelf;Read and write
tabIndextabIndex: number;Read and write
backgroundColorbackgroundColor: string;Read and write
colorcolor: string;Read and write
borderColorborderColor: string;Read and write

focus

method
focus(options?: FocusOptions): void;

show

method
show(): void;

hide

method
hide(): void;

bindEvent

method
bindEvent(eventName: string, handler: WebComponentEventHandler<this> | null): () => void;

emit

method
emit(eventName: string, detail?: unknown): boolean;

dispose

method
dispose(): void;

Events

Link methods in Interaction. How to use events.

OnCellClick

WebDataGridCellEventDetail in event.detail · column, rowIndex, columnIndex, value, getValue

Signature and example
Interaction → OnCellClick
import type { WebDataGrid, WebDataGridCellEventDetail } from '@webrad/runtime';
// Copy this method into the page class and link it in Interaction.
class Example {
  public async DataGrid1CellClick(
    sender: WebDataGrid,
    event: CustomEvent<WebDataGridCellEventDetail>,
  ): Promise<void> {
    console.log(event.detail);
    const { column, rowIndex, columnIndex, value, getValue } = event.detail;
    console.log(column, rowIndex, columnIndex, value, getValue);
  }
}
WebRAD · Atentor · Read in Markdown
Source code: 6a562bda75a0 (with local changes) · November 7, 2026

Search documentation

Type to search APIs, components, and events.