Using Tree View
Parent Tree View keeps the familiar Table Surface columns and actions while loading one sibling page at a time. It is available in Data Explorer, direct tables, Details/Drawer related-data tables, and a full Reference Lookup picker whenever the effective Table Surface is Tree.
Supported in this version
Section titled “Supported in this version”You can expand and collapse rows, retry a failed branch, load additional children under one parent, sort siblings, search/filter while retaining branch context, select real loaded rows in supported desktop or picker hosts, and use the responsive layout. When the effective sort is Manual Order, authorized users can drag with a pointer or use the accessible Move… action on keyboard/mobile. The narrow/mobile Data Explorer intentionally has no record selection or bulk-action bar. There is no expand-all, subtree selection, or WYSIWYG tree export.
Expand, collapse, and load more
Section titled “Expand, collapse, and load more”A chevron means that the record has eligible direct children. Expanding it loads page 1 for that parent. Load more appears inside the branch when more siblings exist. Collapsing retains the loaded page so immediate re-expansion does not require another request.
Loading and retry controls belong to the branch being fetched. A failure does not remove the parent or other open branches. If the Table Surface changed while the request was in flight, the UI discards the entire tree and reloads the bootstrap instead of merging stale children.
Pagination
Section titled “Pagination”Data Explorer, direct tables, and full pickers use their normal footer to page
root branches only. An embedded Details/Drawer related table instead shows
a root-level Load more control that appends the next root page. Every
expanded parent has its own, separate child page and Load more sequence.
Therefore:
- root
TotalCountis the number of eligible roots, not every descendant; - changing the root page in a footer host replaces the visible forest;
- root-level More in an embedded related table appends roots without duplicates;
- loading another child page does not move or append roots;
- maximum page size is 250.
Sorting
Section titled “Sorting”Sorting is server-side and applies independently to every sibling set. Direct table and picker hosts send the same ordered sort for roots and later child requests. Related Details/Drawer hosts send their opaque context revision; the server re-resolves the hosted Table Surface and restores its configured sort for every root and child page. Supported sorts reuse Entity Instance Query semantics: DisplayName, ordinary fields, Reference target DisplayName, ascending/descending direction, null handling, multi-column order, and a stable record-id tie-breaker.
Changing sort reloads roots and closes branches. Sorting only the rows currently projected into AG Grid would mix levels and produce a false hierarchy, so Tree View never uses AG Grid client sorting.
Manual Order is a typed sibling-sort option. It uses the Entity Definition’s single global ranks for roots and every sibling set. Selecting an ordinary sort immediately disables movement without changing ranks. An explicit Tree sort wins over the entity default; with neither one, Display name ascending remains the fallback. See Manual Order.
Search and filters
Section titled “Search and filters”Only direct matches count as query results. A visible parent that does not match may still appear with an ancestor-context marker when one of its visible descendants matches. Follow that branch until the direct match appears.
Hidden records never become context. If a readable child has no visible, readable parent in the current archive scope, it becomes an effective root.
Selection and actions
Section titled “Selection and actions”- Expanding a row does not select it.
- Selecting a parent does not select children.
Load moreis not a record and cannot be selected or acted on.- The desktop Data Explorer removes selected descendants when collapse hides them, so a bulk action cannot target invisible stale rows. The narrow/mobile Data Explorer has no row selection or group actions. Entering it clears the desktop selection and pending group-action UI; returning to desktop starts unselected.
- A Reference picker retains explicit selections across collapse, paging, and refinement until you clear, cancel, or confirm them. It never infers unloaded descendants.
All ordinary row actions retain their existing permission checks. Changing the configured parent through an edit refreshes the tree rather than moving a row optimistically.
Manual Order movement composes the same row permission, hierarchy, Reference, Reference Eligibility, invariant, and mutation-effect rules as an ordinary governed update. A rejected move leaves the row at its authoritative position. Successful reparenting commits Parent and relative order together and refreshes matching open hosts without a page loader.
Export
Section titled “Export”Data Explorer export is a desktop-only workflow. On desktop, Current query export sends the current filter, sort, and archive scope; it exports direct matches and excludes records shown only as ancestor context. Selected rows export sends exactly the selected record ids. The narrow/mobile card layout offers neither query export nor selected-row export. V1 does not export the current depth-first screen projection.
Reference selection
Section titled “Reference selection”A Tree Table Surface can be used only by the full Lookup picker. List and LongList inputs cannot represent lazy branches and are rejected during configuration. In the picker, use the chevron to navigate and the separate Select action to choose a record.
Keyboard and responsive behavior
Section titled “Keyboard and responsive behavior”Tree controls are native buttons: Tab moves focus; Enter or Space activates
expand, collapse, retry, and load-more controls. Expandable rows expose
aria-expanded; every tree row exposes its real one-based aria-level.
Visual indentation stops growing after eight levels, but the accessible level
remains exact.
The Move… action is the supported keyboard/mobile movement path; keyboard drag gestures are not used. Target-bearing moves use the same-record-type selector. A stale target keeps the dialog open, refreshes its safe label and version, and requires explicit resubmission rather than moving automatically.
At narrow widths, Data Explorer uses record cards with the same hierarchy, row-level actions, branch loading, root pagination, markers, and errors. To keep those cards compact, it deliberately omits record checkboxes, multi-record selection, and the bulk-action bar. The full picker keeps the same tree semantics and uses compact row actions; picker selection remains available when the picker workflow requires it.
Worked example
Section titled “Worked example”Search an Epic/request tree for address. The root Customer onboarding and
child Create account may appear as context; Verify address is the direct
match. Sorting by Subject orders root Epics among roots and Requests among
their own siblings. Exporting the query includes Verify address, not the two
context-only ancestors.
Errors and recovery
Section titled “Errors and recovery”| State | Meaning | Recovery |
|---|---|---|
| Branch retry | One child request failed | Retry that branch. |
| Tree response invalid | Payload had both/neither Page and TreePage, or conflicts with the surface | Reload; report persistent contract errors. |
Surface changed (409) | A surface, persisted Lookup, or related host-context revision is stale | The UI clears tree state and bootstraps again. |
Search unavailable (400, moltaro.search.notAvailable) | The Entity Definition has no available configured-search target | Preserve or clear the query, fix search configuration if appropriate, and retry; do not flatten the Tree response. |
| Hierarchy warning | A self-parent or cycle edge was cut safely | Inspect and repair that record’s Parent value. |