{"id":18825426,"url":"https://github.com/outsystems/outsystems-datagrid","last_synced_at":"2026-05-16T15:00:56.331Z","repository":{"id":37089543,"uuid":"339075654","full_name":"OutSystems/outsystems-datagrid","owner":"OutSystems","description":"Repository containing the code that enables OutSystems code and the Data Grid provider to work together.","archived":false,"fork":false,"pushed_at":"2026-05-06T12:16:02.000Z","size":8081,"stargazers_count":13,"open_issues_count":2,"forks_count":7,"subscribers_count":26,"default_branch":"dev","last_synced_at":"2026-05-06T14:17:40.976Z","etag":null,"topics":["datagrid","engineering","o11","odc","outsystems","outsystems-reactive","platform-o11","ssdlc-rules","ui-components","wijmo-flexgrid"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/OutSystems.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":".github/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2021-02-15T12:46:56.000Z","updated_at":"2026-04-29T15:14:47.000Z","dependencies_parsed_at":"2026-01-16T08:07:09.192Z","dependency_job_id":null,"html_url":"https://github.com/OutSystems/outsystems-datagrid","commit_stats":null,"previous_names":[],"tags_count":36,"template":false,"template_full_name":null,"purl":"pkg:github/OutSystems/outsystems-datagrid","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OutSystems%2Foutsystems-datagrid","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OutSystems%2Foutsystems-datagrid/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OutSystems%2Foutsystems-datagrid/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OutSystems%2Foutsystems-datagrid/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/OutSystems","download_url":"https://codeload.github.com/OutSystems/outsystems-datagrid/tar.gz/refs/heads/dev","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OutSystems%2Foutsystems-datagrid/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33107564,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-16T04:41:52.686Z","status":"ssl_error","status_checked_at":"2026-05-16T04:41:52.009Z","response_time":115,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["datagrid","engineering","o11","odc","outsystems","outsystems-reactive","platform-o11","ssdlc-rules","ui-components","wijmo-flexgrid"],"created_at":"2024-11-08T00:59:25.656Z","updated_at":"2026-05-16T15:00:56.325Z","avatar_url":"https://github.com/OutSystems.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# OutSystems Data Grid · [![GitHub License](https://img.shields.io/badge/License-BSD%203--Clause-blue.svg)](https://github.com/OutSystems/outsystems-datagrid/blob/master/LICENSE) ![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)\n\nView, explore, and edit large amounts of data in a familiar spreadsheet interface with the Data Grid component for **OutSystems Reactive Web apps**.\n\n## About the component\n\nThe goal for the OutSystems Data Grid component is to help you develop applications that need data visualization and manipulation features that are not currently covered by other components.\n\nUse the OutSystems Data Grid to create enterprise-grade interfaces that are more suitable and time-effective than designing a custom solution every time you need to manipulate dense datasets.\n\nSee [CONTRIBUTING.md](./CONTRIBUTING.md) for development setup, workflow, code standards, and PR requirements.\n\n#### Key features\n\n- Built for Reactive Web apps\n- Data selection and editing in a familiar interface\n- Data sorting by parameter\n- Data grouping\n- Virtual Scrolling\n\nPlease check the [tutorial OutSystems Data Grid in less than 4 minutes](https://www.youtube.com/watch?v=OFXOPrkRlrI).\n\n### Where can you find the component?\n\nThe OutSystems component, like all components, can be found in [OutSystems Forge](https://www.outsystems.com/forge/component-overview/9764/outsystems-data-grid-o11) and [OutSystems Forge Component Page (ODC)](https://www.outsystems.com/forge/component-overview/15929/outsystems-data-grid-odc).\nThere you can also find a [sample application](https://www.outsystems.com/forge/component-overview/9765/data-grid-sample-reactive) that show-cases several uses of the component, that is also [the documentation].\n\n### Why use this component?\n\nIf you're using OutSystems, this is how you can use this component in your application:\n![Developer experience](https://www.outsystems.com/FroalaEditor/Download.aspx?GUID=2021216vzoTkL5piWLCGCv7VXgBkFoNdpCIye5Z9m2zyhV1gL)\n\n## About this repository\n\nThis repository contains the code that enable the usage of an external provider ([Wijmo](https://developer.mescius.com/wijmo)), to create grids in OutSystems applications with the least possible effort.\nThe code is written in TypeScript🖤, and you branch it and PR your changes/proposals!\n\n### What tools should you use?\n\nWe highly recommend the usage of the following tools:\n\n- [Visual Studio Code](https://code.visualstudio.com/)\n- With these extensions:\n    - Document This\n    - ESLint\n    - Prettier - Code formatter\n\n### How to use change this code?\n\n1. Create a branch based in the branch **master** (lastest \u0026 greatest release)\n2. Open your Visual Studio Code in your branch\n3. Run the following command in Visual Studio Code terminal: `npm run setup` (this will install all the dependencies that you need and compile the code)\n4. Do your magic! :)\n5. **Document your code** (with the extension \"Document This\", start typing `/**` and the extension will give you a good starting point\n6. Compile and fix errors and warnings (in Visual Studio Code terminal: `npm run build`)\n7. Check if the code format is following our conventions (in Visual Studio Code terminal: `npm run lint`)\n   7.1 Some of the conventions can be fixed automatically by lint (in Visual Studio Code terminal: `npm run lintfix`)\n   7.2 Although the script above execute the prettier conventions, you may want to run it over all project files (in Visual Studio Code terminal: `npm run prettier`)\n8. Fix all errors \u0026 warnings! :)\n9. Create a PR, describing what was the (mis)behavior, what you changed and please provide a sample\n\n### How to run the .NET extension tests?\n\nThe `DataGridUtils` extension ships with a standalone test project under [extension/tests/](./extension/tests/) that exercises `MssConvertData2JSON` against mock OutSystems types (`IRecord`, `ISimpleRecord`, `IOSList`). No OutSystems platform or Integration Studio install is required.\n\nThe project is a .NET Framework 4.7.2 console app (`OutputType=Exe`): each test runs from `Main`, the runner prints pass/fail, and the process exits with a non-zero code if any test fails — CI-friendly out of the box.\n\n**Prerequisites**\n\n- .NET Framework 4.7.2 developer pack installed.\n- Either Visual Studio 2019+ or the Build Tools for Visual Studio (so `msbuild` is on `PATH`, e.g. via the _Developer Command Prompt for VS_).\n\n**Run with Visual Studio**\n\n1. Open `extension/DataGridUtils/Source/NET/DataGridUtils.sln` and build it (`Ctrl+Shift+B`) — this produces `OutSystems.NssDataGridUtils.dll` in `obj/Debug/`, which the test project consumes.\n2. Open `extension/tests/DataGridUtils.Tests.csproj` (add it to the solution or open in a second VS instance).\n3. If the `OutSystems.NssDataGridUtils` reference shows as unresolved, right-click it → **Properties** and repoint the _Path_ to the `obj/Debug/OutSystems.NssDataGridUtils.dll` produced in step 1. The checked-in `HintPath` may point at a contributor-specific location and is a known maintenance quirk.\n4. Set `DataGridUtils.Tests` as the startup project and press `F5` (debug) or `Ctrl+F5` (run without debugging).\n\n**Run from the command line**\n\n```bash\n# 1. Build the extension first — produces OutSystems.NssDataGridUtils.dll\ncd extension/DataGridUtils/Source/NET\nmsbuild DataGridUtils.sln /p:Configuration=Debug\n\n# 2. Build and run the test project\ncd ../../../tests\nmsbuild DataGridUtils.Tests.csproj /p:Configuration=Debug\n./bin/Debug/net472/DataGridUtils.Tests.exe\n```\n\n**Expected output**\n\n```\n=== DataGridUtils Tests ===\n\n  PASS: MssConvertData2JSON_WithComplexListData_ReturnsExpectedJSON\n  PASS: MssConvertData2JSON_MultiSsFieldRow_CountFirst_EmitsFullRecord\n  PASS: MssConvertData2JSON_MultiSsFieldRow_EmployeeFirst_EmitsFullRecord\n  PASS: MssConvertData2JSON_LegacySingleAttrWrapper_StillFlattens\n\nResults: 4 passed, 0 failed, 4 total\n```\n\n**Adding a new test**\n\n1. Declare the mock types (implementing `IRecord` / `ISimpleRecord` / `IOSList`) alongside the existing ones in `ConvertData2JSONTests.cs` — follow the `RCRow_*` / `RL\u003cT\u003e` patterns already established for ROU-12689.\n2. Write a `static void` test method inside `Program` that calls `sut.MssConvertData2JSON(list, out string result)` and compares against an explicit expected string via `AssertEqual`.\n3. Register it in `Main` with `RunTest(nameof(YourTest), YourTest)`.\n\nIf a test fails, `AssertEqual` prints the first differing character position and a 60-char context window, which is usually enough to diagnose shape drift without a debugger.\n\n### How to add new feature/fix?\n\n- A new branch from **master** should be created.\n- If possible the branch should be kept updated with the master branch.\n- If possible unnecessary commit messages should be omitted.\n\n### How to do a Pull Request?\n\nAfter completing your changes, and testing, please proceed with submitting a Pull Request.\n\nTo be accepted, a Pull Request needs to:\n\n1. **Fulfill the following requirements**\n    - Needs to compile without errors\n    - Needs to follow the code style rules (without warnings and errors)\n    - Needs to be approved by 2 team members (owners of the repo)\n    - The Pull Request template, should be filled up by the Pull Requestor:\n        - Provide a short description\n        - A link to a sample page showing the fixed behavior or the new feature\n        - What was happening?\n        - What was done?\n        - Tests steps\n        - Screenshots\n        - Checklist\n\n2. **Follow best practices**\n    - The submitted code should be well documented (e.g. comments).\n    - Avoid changes outside the scope of the issue in hands.\n    - Avoid exposing sensible information of any kind (e.g. internal server link, process, etc).\n\n## Useful Links\n\n- Download latest O11 version in [OutSystems forge](https://www.outsystems.com/forge/component-overview/9764/outsystems-data-grid-o11)\n- Download latest ODC version in [OutSystems Forge Component Page (ODC)](https://www.outsystems.com/forge/component-overview/15929/outsystems-data-grid-odc)\n- Test the latest changes in the [sample app](https://www.outsystems.com/forge/component-overview/9765/data-grid-sample-reactive)\n- Component [living documentation](https://outsystemsui.outsystems.com/OutSystemsDataGridSample/)\n- [Tutorial OutSystems Data Grid in less than 4 minutes](https://www.youtube.com/watch?v=OFXOPrkRlrI)\n\n## 📫\u0026nbsp; Have a question? Want to chat? Ran into a problem?\n\nWrite us in [the component support page](https://www.outsystems.com/forge/component-discussions/9764/Data+Grid+Reactive)!\n\n## How to sign up for the announcement list\n\nAvailable internally on Slack channel _#rd-uicomponents-contributors_.\n\n## Keywords\n\nGitHub - OutSystems - Data Grid\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foutsystems%2Foutsystems-datagrid","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Foutsystems%2Foutsystems-datagrid","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foutsystems%2Foutsystems-datagrid/lists"}