OutSystems Data Grid wraps Wijmo FlexGrid to deliver enterprise-grade spreadsheet functionality in OutSystems Reactive Web applications. The repository contains TypeScript (browser-side grid wrapper) and a .NET extension (server-side data preparation).
- ARCHITECTURE.md — five architectural tenets (T1–T5), component boundaries, external integrations table, and build process
- CONTRIBUTING.md — branch naming (
ROU-12345), PR title/label requirements, code standards (naming conventions, member ordering, formatting), and getting help
The DataGridUtils extension converts OutSystems entities/structures to JSON with embedded metadata. Key files live under extension/DataGridUtils/Source/NET/:
Interface.cs— public API (IssDataGridUtils.MssConvertData2JSON)DataGridUtils.cs— bundles data + metadata into{"data": ..., "metadata": ...}ObtainMetadata.cs— reflection-based schema extractiontemp_ardoJSON.cs— forked JSON serializer with smart ISO 8601 date handling
OutSystems field prefix conventions (stripped in JSON output):
ss— simple field,ssEN— entity,ssST— structureByte[]fields are excluded from both data and metadata- DateTime:
1900-01-01 00:00:00→ empty string, date-only →yyyy-MM-dd, full → UTC ISO 8601
Testing: Run console tests from extension/tests/DataGridUtils.Tests.csproj (mock OutSystems types).
See .cursor/rules/project-context.mdc for detailed extension context.
When modifying provider layer code (src/Providers/DataGrid/Wijmo/), consult Wijmo FlexGrid docs at https://developer.mescius.com/wijmo/api/classes/Wijmo_Grid.Flexgrid.html. Key Wijmo capabilities used:
- Virtual rendering (row/column virtualization for large datasets)
- Multi-panel architecture (data cells, column headers, row headers, footers)
itemsSource/collectionViewfor data binding with editing support- Selection API (
selection,selectedItems,selectedRows) - Editing lifecycle (
startEditing,finishEditing,itemValidator) - Clipboard events (
getClipString,copied,pasted)
Input sanitization occurs at two distinct points — see ARCHITECTURE.md T5 for rationale:
- Data entry — HTML escaping via
OSFramework.DataGrid.Helper.Sanitize - Data exit — CSV injection prevention via
Providers.DataGrid.Wijmo.Features.CellDataSanitizer
Runtime toggles: OutSystems.GridAPI.Security.EnableCellDataSanitizer(gridID) / DisableCellDataSanitizer(gridID)
extension/DataGridUtils/Templates/NET/— auto-generated by Integration Studiosrc/@types/wijmo-5.20252.44/— vendored Wijmo type definitions
Architecture Decision Records in docs/adr/. Currently: ADR-0001 (Extension .NET Upgrade).