Skip to content

Grid-first record workflows

View as Markdown

A grid is not one abstraction in Sapporta. The generated table screen, TGrid, and GridCore preserve different amounts of table meaning. Choose the row and cache owner first, then read the focused implementation guide.

NeedSurfaceData or cache owner
Ordinary CRUD, filters, lookups, child collections, and exportGenerated table screenGenerated table surface and server
Registered table with custom columns, renderers, hierarchy, or Grid compositionTGrid, normally through TableGridViewTable-aware Grid session
Temporary, composite, calculated, or browser-owned rowsGridCore, usually with ColumnPresetApplication source and runtime
Custom route, layout, workflow, URL state, commands, or non-grid controlsApplication React screenScreen coordinates query, Grid, and action owners
Reusable, authoritative scoped aggregateApplication report route and screenServer route plus typed client and query

The generated route is the default because it already has table metadata, lookups, generated clients, URL query state, record links, and row-safe writes. TGrid retains those table services while the application chooses the composition. GridCore starts from a schema and data source you supply. ColumnPreset can add standard editors and codecs to GridCore, but it does not turn application rows into registered table rows.

Use ordinary controls for singleton values, forms, wizards, and compact panels around a Grid. A custom screen can keep generated screens as the system of record while adding one focused projection or command beside them.

The host or data source supplies stable row keys. Grid owns focus, editing state, selection, hierarchy, drafts, and subscriptions. A generated table route or application endpoint owns authentication, row scope, domain validation, conflicts, and transactions. Hidden columns, fixed filters, row keys, and selection state are presentation, not authorization.