Skip to content
Shiny Controls v1.0 - The Ultra Control Suite for .NET MAUI & BlazorO...M...G!

DataGrid

DataGrid is a feature-rich data grid modeled on MudBlazor’s DataGrid. On Blazor it’s a generic DataGrid<TItem> that renders a semantic HTML <table>; on MAUI it’s a pure cross-platform composite — a Grid header over a virtualized CollectionView, with no per-platform native handlers — so it looks and behaves identically on iOS, Android, Windows, and Mac.

  • NuGet downloads for Shiny.Maui.Controls
  • NuGet downloads for Shiny.Blazor.Controls
Frameworks
.NET MAUI
Blazor

MAUI

DataGrid

Blazor

Sorting, grouping and paging on Blazor
  • Typed & template columnsPropertyColumn (expression-bound, auto title/format) and TemplateColumn (custom cell/edit/header/footer content)
  • Sorting — click headers; single or multi-sort with order badges
  • Filtering — per-column filter menu, an inline filter row, or a toolbar quick-search; type-aware operators (string/number/date/bool/enum)
  • Grouping — group by a column with expandable group rows
  • Aggregates — footer and per-group Count / Sum / Average / Min / Max / Custom
  • Selection — single or multiple with checkboxes and select-all
  • Inline editing — cell and form edit modes with commit/cancel and edit events
  • Detail rows — a full-width “breakdown” row under an expanded row, hosting whatever controls you like, with optional async loading and a spinner on the caret
  • Tree mode — nest rows with a ChildrenSelector, with optional lazy loading per level (TreeDataGrid)
  • Paging — built-in pager with page-size selection
  • Virtualization — for large datasets (free on MAUI via CollectionView)
  • Column formatting — display presets (currency/percent/date/file size/boolean/enum), alignment, a null placeholder, prefix/suffix, wrapping and conditional per-cell styling, none of which need a cell template
  • Column widths in pixels, stars or percentages; column resize with per-column min/max widths and a per-column opt-out; drag-and-drop column reorder; sticky header, loading + empty states
  • Server-side data via a ServerData delegate (GridStateGridData)
  • Theming — surface/text/outline/primary colors follow the theme tokens (light/dark aware)
Page What’s in it
Getting Started Declaring a grid and its columns on Blazor and MAUI, plus the behavior differences between the hosts
Column Formatting DisplayAs presets, format strings, NullText/Prefix/Suffix, alignment, wrapping and clamping
Conditional Cell Styling CellStyle — colour, background and weight for one cell, from the row item
Column Widths Pixels, stars and percentages, and how a percentage resolves on each host
Column Ordering Drag-and-drop reorder, the MAUI ‹ › arrows, and persisting a user’s order
Column Resizing Drag handles, per-column min/max bounds, and the Blazor resize modes
Frozen Header & Columns Pinning a contiguous run of columns to either edge
Detail (Breakdown) Rows A full-width row under an expanded row, hosting whatever you like
Async Detail & IsBusy Fetching a breakdown on demand, the caret spinner, and the grid-level IsBusy
TreeDataGrid The same grid in hierarchy mode — nested rows, lazy levels, and how the pipeline treats a tree
claude plugin marketplace add shinyorg/skills
claude plugin install shiny@shiny

One plugin installs all 35 Shiny skills. Your agent loads only the skill relevant to what you're building, so there's no cost to having them all available.

copilot plugin marketplace add https://github.com/shinyorg/skills
copilot plugin install shiny@shiny

One plugin installs all 35 Shiny skills. Your agent loads only the skill relevant to what you're building, so there's no cost to having them all available.

View shiny-controls Skill