Ignite UI for Blazor - Data Grids
How to use this skill
- Pick the grid type from the decision guide.
- Read every reference file matching the request (in one parallel batch) — a request often spans several, e.g. remote paging plus editing needs
paging-remote.md and editing.md.
- If the
igniteui-cli MCP server is available, call get_doc(framework: "blazor", name: "<slug>") for the grid and each feature, and search_api / get_api_reference for exact signatures. MCP output wins over this skill on any conflict.
- Write code from what you read. Grid APIs differ sharply between Ignite UI's Angular, React, and Blazor products — do not carry syntax over from another framework, and say so plainly when something is not covered rather than guessing.
Without the MCP server this skill still works — the reference files are self-contained. Do not configure MCP unprompted; if the user wants it, see MCP server (optional).
Routing table
| Task |
Read |
| Quick start, columns, data types, cell/header/editor templates, column groups, multi-row layout, pinning, sorting UI, filtering UI, selection |
references/structure.md |
| Grouping, summaries, cell merging, toolbar, Excel/CSV export, virtualization, row drag, action strip, master-detail, clipboard |
references/features.md |
| Grid Lite, Tree Grid, Hierarchical Grid, Pivot Grid specifics |
references/types.md |
Programmatic sort / filter / group, @ref access, custom strategies |
references/data-operations.md |
| Cell editing, row editing, validation, custom editors, add/delete rows |
references/editing.md |
| Paging, remote data, server-side operations, virtual scrolling |
references/paging-remote.md |
State persistence (IgbGridState, save/restore) |
references/state.md |
| Grid width/height, column sizing, row height, density |
references/sizing.md |
Migrating IgbGridLite → IgbGrid |
references/grid-migration.md |
Choosing a grid type
Ask in order:
- Read-only display with sorting, filtering, and virtualization but no editing, selection, or paging →
IgbGridLite (MIT, separate package).
- Pivot analytics — rows/columns/values users can drag to reshape →
IgbPivotGrid.
- Parent-child where each level has a different schema (Companies → Departments → Employees) →
IgbHierarchicalGrid.
- Parent-child within one schema (
ManagerId self-reference, or a nested children array) → IgbTreeGrid.
- Flat table needing enterprise features (editing, grouping, paging, export) →
IgbGrid.
When Grid Lite's capabilities run out, the upgrade path is always IgbGrid — never a non-grid component. See grid-migration.md.
| Grid |
Module |
Package |
IgbGridLite |
No module registry required |
IgniteUI.Blazor.GridLite (MIT) |
IgbGrid |
IgbGridModule |
IgniteUI.Blazor / .Trial |
IgbTreeGrid |
IgbTreeGridModule |
IgniteUI.Blazor / .Trial |
IgbHierarchicalGrid |
IgbHierarchicalGridModule |
IgniteUI.Blazor / .Trial |
IgbPivotGrid |
IgbPivotGridModule |
IgniteUI.Blazor / .Trial |
Grids are not included in IgniteUI.Blazor.Lite.
Prerequisites
| Requirement |
Value |
| .NET SDK |
8.0 or later |
| Registration |
builder.Services.AddIgniteUIBlazor(typeof(IgbGridModule), …) in Program.cs |
| Using directive |
@using IgniteUI.Blazor.Controls in _Imports.razor |
| CSS — full grids |
both _content/IgniteUI.Blazor/themes/light/bootstrap.css and _content/IgniteUI.Blazor/themes/grid/light/bootstrap.css |
| CSS — Grid Lite |
_content/IgniteUI.Blazor.GridLite/css/themes/light/bootstrap.css only — not the two above |
| Script |
_content/IgniteUI.Blazor/app.bundle.js before the Blazor framework script |
The grid-specific stylesheet is easy to miss and is required whenever any full-featured grid is on the page. Full setup detail lives in the components skill's setup.md.
Feature availability
| Feature |
GridLite |
Grid |
TreeGrid |
HierarchicalGrid |
PivotGrid |
| Sorting |
✅ |
✅ |
✅ |
✅ |
dimension-based |
| Filtering |
✅ |
✅ |
✅ |
✅ |
dimension-based |
| Column hiding / resizing |
✅ |
✅ |
✅ |
✅ |
❌ |
| Row / cell / column selection |
❌ |
✅ |
✅ (cascade) |
✅ |
❌ |
| Cell / row editing, row adding |
❌ |
✅ |
✅ |
✅ |
❌ |
| Grouping |
❌ |
✅ only |
❌ |
❌ |
use dimensions |
| Summaries |
❌ |
✅ |
✅ |
✅ |
built-in aggregations |
| Paging |
❌ |
✅ |
✅ |
✅ |
❌ |
| Column pinning / moving |
❌ |
✅ |
✅ |
✅ |
❌ |
| Multi-column headers |
❌ |
✅ |
✅ |
✅ |
❌ |
| Row dragging |
❌ |
✅ |
✅ |
✅ |
❌ |
| Master-detail |
❌ |
✅ only |
❌ |
use IgbRowIsland |
❌ |
| Toolbar, Excel/CSV export |
❌ |
✅ |
✅ |
✅ |
❌ |
| Cell merging |
❌ |
✅ only |
❌ |
❌ |
❌ |
| State persistence |
❌ |
✅ |
✅ |
✅ |
✅ |
| Virtualization |
✅ |
✅ |
✅ |
✅ |
✅ |
| Load on demand |
❌ |
❌ |
✅ via LoadChildrenOnDemandScript |
✅ via GridCreatedScript |
❌ |
| Remote data ops |
DataPipelineConfiguration |
events + noop strategies |
events + noop strategies |
events + noop strategies |
❌ |
Batch editing is not available in Blazor on any grid type. Supported editing modes are cell editing and row editing only — never generate batch-editing code.
Grid-wide rules
- Set
PrimaryKey. Selection, editing, row-targeted APIs, and state persistence all depend on it.
- Set
Height. Row virtualization only activates with a fixed height; without one every row renders to the DOM.
- Prefer
AutoGenerate="false" so column order, types, and templates are explicit.
- Set
DataType on every column — it drives the filter conditions, sort comparison, editor, and formatting.
Data must be a materialized collection (List<T>, T[]), not IQueryable or JSON.
- Use
@ref for programmatic access, and only after first render — the reference is null in OnInitialized.
- Do not set column
Width unless asked. Without widths the grid distributes space proportionally and fills the container; fixed widths usually leave a gap on the right.
- Docs slugs follow
components/grid-lite/{topic} and components/grids/{grid|treegrid|hierarchicalgrid|pivotgrid}/{topic}.
MCP server (optional)
igniteui-cli provides list_components, get_doc, search_docs, search_api, get_api_reference, all taking framework: "blazor". To enable it, add to .vscode/mcp.json (VS Code, key servers):
{ "servers": { "igniteui-cli": { "command": "npx", "args": ["-y", "igniteui-cli", "mcp"] } } }
Or .cursor/mcp.json / claude_desktop_config.json (key mcpServers):
{ "mcpServers": { "igniteui-cli": { "command": "npx", "args": ["-y", "igniteui-cli", "mcp"] } } }
Reload the editor afterwards. JetBrains: Settings → Tools → AI Assistant → MCP Servers, command npx, arguments igniteui-cli mcp.
Related skills
1---2name: igniteui-blazor-grids3description: All Ignite UI for Blazor data grids — Grid Lite, Flat Grid, Tree Grid, Hierarchical Grid, Pivot Grid: setup, columns and templates, sorting, filtering, selection, cell and row editing, grouping, summaries, toolbar, Excel/CSV export, paging, remote and server-side data, virtualization, sizing, state persistence, and migrating Grid Lite to IgbGrid. Use for grids, tables, tabular data, cell editing, row selection, column pinning or hiding, grouped rows, pivot tables, tree or hierarchical data, master-detail views, and grid export. For non-grid components use igniteui-blazor-components; for theming use igniteui-blazor-theming.4license: MIT5---67# Ignite UI for Blazor - Data Grids89## How to use this skill10111. Pick the grid type from the [decision guide](#choosing-a-grid-type).122. Read **every** reference file matching the request (in one parallel batch) — a request often spans several, e.g. remote paging plus editing needs `paging-remote.md` **and** `editing.md`.133. If the `igniteui-cli` MCP server is available, call `get_doc(framework: "blazor", name: "<slug>")` for the grid and each feature, and `search_api` / `get_api_reference` for exact signatures. MCP output wins over this skill on any conflict.144. Write code from what you read. Grid APIs differ sharply between Ignite UI's Angular, React, and Blazor products — do not carry syntax over from another framework, and say so plainly when something is not covered rather than guessing.1516**Without the MCP server this skill still works** — the reference files are self-contained. Do not configure MCP unprompted; if the user wants it, see [MCP server (optional)](#mcp-server-optional).1718### Routing table1920| Task | Read |21|---|---|22| Quick start, columns, data types, cell/header/editor templates, column groups, multi-row layout, pinning, sorting UI, filtering UI, selection | [`references/structure.md`](./references/structure.md) |23| Grouping, summaries, cell merging, toolbar, Excel/CSV export, virtualization, row drag, action strip, master-detail, clipboard | [`references/features.md`](./references/features.md) |24| Grid Lite, Tree Grid, Hierarchical Grid, Pivot Grid specifics | [`references/types.md`](./references/types.md) |25| Programmatic sort / filter / group, `@ref` access, custom strategies | [`references/data-operations.md`](./references/data-operations.md) |26| Cell editing, row editing, validation, custom editors, add/delete rows | [`references/editing.md`](./references/editing.md) |27| Paging, remote data, server-side operations, virtual scrolling | [`references/paging-remote.md`](./references/paging-remote.md) |28| State persistence (`IgbGridState`, save/restore) | [`references/state.md`](./references/state.md) |29| Grid width/height, column sizing, row height, density | [`references/sizing.md`](./references/sizing.md) |30| Migrating `IgbGridLite` → `IgbGrid` | [`references/grid-migration.md`](./references/grid-migration.md) |3132## Choosing a grid type3334Ask in order:35361. **Read-only display** with sorting, filtering, and virtualization but no editing, selection, or paging → **`IgbGridLite`** (MIT, separate package).372. **Pivot analytics** — rows/columns/values users can drag to reshape → **`IgbPivotGrid`**.383. **Parent-child where each level has a different schema** (Companies → Departments → Employees) → **`IgbHierarchicalGrid`**.394. **Parent-child within one schema** (`ManagerId` self-reference, or a nested children array) → **`IgbTreeGrid`**.405. **Flat table needing enterprise features** (editing, grouping, paging, export) → **`IgbGrid`**.4142When Grid Lite's capabilities run out, the upgrade path is always `IgbGrid` — never a non-grid component. See [`grid-migration.md`](./references/grid-migration.md).4344| Grid | Module | Package |45|---|---|---|46| `IgbGridLite` | No module registry required | `IgniteUI.Blazor.GridLite` (MIT) |47| `IgbGrid` | `IgbGridModule` | `IgniteUI.Blazor` / `.Trial` |48| `IgbTreeGrid` | `IgbTreeGridModule` | `IgniteUI.Blazor` / `.Trial` |49| `IgbHierarchicalGrid` | `IgbHierarchicalGridModule` | `IgniteUI.Blazor` / `.Trial` |50| `IgbPivotGrid` | `IgbPivotGridModule` | `IgniteUI.Blazor` / `.Trial` |5152Grids are **not** included in `IgniteUI.Blazor.Lite`.5354## Prerequisites5556| Requirement | Value |57|---|---|58| .NET SDK | 8.0 or later |59| Registration | `builder.Services.AddIgniteUIBlazor(typeof(IgbGridModule), …)` in `Program.cs` |60| Using directive | `@using IgniteUI.Blazor.Controls` in `_Imports.razor` |61| CSS — full grids | **both** `_content/IgniteUI.Blazor/themes/light/bootstrap.css` **and** `_content/IgniteUI.Blazor/themes/grid/light/bootstrap.css` |62| CSS — Grid Lite | `_content/IgniteUI.Blazor.GridLite/css/themes/light/bootstrap.css` only — not the two above |63| Script | `_content/IgniteUI.Blazor/app.bundle.js` before the Blazor framework script |6465The grid-specific stylesheet is easy to miss and is required whenever any full-featured grid is on the page. Full setup detail lives in the components skill's [`setup.md`](../igniteui-blazor-components/references/setup.md).6667## Feature availability6869| Feature | GridLite | Grid | TreeGrid | HierarchicalGrid | PivotGrid |70|---|---|---|---|---|---|71| Sorting | ✅ | ✅ | ✅ | ✅ | dimension-based |72| Filtering | ✅ | ✅ | ✅ | ✅ | dimension-based |73| Column hiding / resizing | ✅ | ✅ | ✅ | ✅ | ❌ |74| Row / cell / column selection | ❌ | ✅ | ✅ (cascade) | ✅ | ❌ |75| Cell / row editing, row adding | ❌ | ✅ | ✅ | ✅ | ❌ |76| Grouping | ❌ | ✅ **only** | ❌ | ❌ | use dimensions |77| Summaries | ❌ | ✅ | ✅ | ✅ | built-in aggregations |78| Paging | ❌ | ✅ | ✅ | ✅ | ❌ |79| Column pinning / moving | ❌ | ✅ | ✅ | ✅ | ❌ |80| Multi-column headers | ❌ | ✅ | ✅ | ✅ | ❌ |81| Row dragging | ❌ | ✅ | ✅ | ✅ | ❌ |82| Master-detail | ❌ | ✅ **only** | ❌ | use `IgbRowIsland` | ❌ |83| Toolbar, Excel/CSV export | ❌ | ✅ | ✅ | ✅ | ❌ |84| Cell merging | ❌ | ✅ **only** | ❌ | ❌ | ❌ |85| State persistence | ❌ | ✅ | ✅ | ✅ | ✅ |86| Virtualization | ✅ | ✅ | ✅ | ✅ | ✅ |87| Load on demand | ❌ | ❌ | ✅ via `LoadChildrenOnDemandScript` | ✅ via `GridCreatedScript` | ❌ |88| Remote data ops | `DataPipelineConfiguration` | events + noop strategies | events + noop strategies | events + noop strategies | ❌ |8990**Batch editing is not available in Blazor** on any grid type. Supported editing modes are cell editing and row editing only — never generate batch-editing code.9192## Grid-wide rules9394- **Set `PrimaryKey`.** Selection, editing, row-targeted APIs, and state persistence all depend on it.95- **Set `Height`.** Row virtualization only activates with a fixed height; without one every row renders to the DOM.96- **Prefer `AutoGenerate="false"`** so column order, types, and templates are explicit.97- **Set `DataType` on every column** — it drives the filter conditions, sort comparison, editor, and formatting.98- **`Data` must be a materialized collection** (`List<T>`, `T[]`), not `IQueryable` or JSON.99- **Use `@ref` for programmatic access**, and only after first render — the reference is `null` in `OnInitialized`.100- **Do not set column `Width` unless asked.** Without widths the grid distributes space proportionally and fills the container; fixed widths usually leave a gap on the right.101- Docs slugs follow `components/grid-lite/{topic}` and `components/grids/{grid|treegrid|hierarchicalgrid|pivotgrid}/{topic}`.102103## MCP server (optional)104105`igniteui-cli` provides `list_components`, `get_doc`, `search_docs`, `search_api`, `get_api_reference`, all taking `framework: "blazor"`. To enable it, add to `.vscode/mcp.json` (VS Code, key `servers`):106107```json108{ "servers": { "igniteui-cli": { "command": "npx", "args": ["-y", "igniteui-cli", "mcp"] } } }109```110111Or `.cursor/mcp.json` / `claude_desktop_config.json` (key `mcpServers`):112113```json114{ "mcpServers": { "igniteui-cli": { "command": "npx", "args": ["-y", "igniteui-cli", "mcp"] } } }115```116117Reload the editor afterwards. JetBrains: **Settings → Tools → AI Assistant → MCP Servers**, command `npx`, arguments `igniteui-cli mcp`.118119## Related skills120121- [`igniteui-blazor-components`](../igniteui-blazor-components/SKILL.md) — every non-grid component, plus charts122- [`igniteui-blazor-theming`](../igniteui-blazor-theming/SKILL.md) — themes, palettes, design tokens