A Blazor wrapper for the Ignite UI GridLite web component, providing a lightweight and performant data grid for Blazor applications.
- π Lightweight grid component built on web components
- π Column configuration with custom headers
- π Sorting and filtering support
- π¨ Multiple built-in themes (Bootstrap, Material, Fluent, Indigo) with light/dark variants
- π Easy integration with existing Blazor applications
- π― Multi-framework support (.NET 8, 9, and 10)
Install the NuGet package:
dotnet add package IgniteUI.Blazor.GridLiteIn your Program.cs, no special services are required. The component uses standard Blazor JSInterop.
The JavaScript bundle is automatically included via _content static files.
In your App.razor or layout file, include one of the available themes:
<!-- Light themes -->
<link href="_content/IgniteUI.Blazor.GridLite/css/themes/light/bootstrap.css" rel="stylesheet" />
<!-- or -->
<link href="_content/IgniteUI.Blazor.GridLite/css/themes/light/material.css" rel="stylesheet" />
<!-- or -->
<link href="_content/IgniteUI.Blazor.GridLite/css/themes/light/fluent.css" rel="stylesheet" />
<!-- or -->
<link href="_content/IgniteUI.Blazor.GridLite/css/themes/light/indigo.css" rel="stylesheet" />
<!-- Dark themes also available in css/themes/dark/ -->@using IgniteUI.Blazor.Controls
<IgbGridLite Data="@employees"
Columns="@columns" />
@code {
private List<Employee> employees = new();
private List<IgbColumnConfiguration> columns = new();
protected override void OnInitialized()
{
employees = GetEmployees();
columns = new List<IgbColumnConfiguration>
{
new() { Key = nameof(Employee.Id), HeaderText = "ID", Width = "100px", Type = GridLiteColumnDataType.Number },
new() { Key = nameof(Employee.Name), HeaderText = "Employee Name", Type = GridLiteColumnDataType.String },
new() { Key = nameof(Employee.Department), HeaderText = "Department", Type = GridLiteColumnDataType.String },
new() { Key = nameof(Employee.Salary), HeaderText = "Salary", Width = "150px", Type = GridLiteColumnDataType.Number }
};
}
}<IgbGridLite Data="@employees"
Columns="@columns"
SortExpressions="@initialSort"
FilterExpressions="@initialFilter" />
@code {
private List<IgbGridLiteSortExpression> initialSort = new()
{
new() { Key = nameof(Employee.Name), Direction = GridLiteSortingDirection.Ascending }
};
private List<IgbGridLiteFilterExpression> initialFilter = new()
{
new() { Key = nameof(Employee.Department), Condition = "contains", SearchTerm = "Sales" }
};
}Enable sorting on specific columns:
new IgbColumnConfiguration
{
Key = nameof(Employee.Name),
HeaderText = "Name",
Resizable = true,
Sort = true // Enable sorting
}Enable filtering on columns:
new IgbColumnConfiguration
{
Key = nameof(Employee.Department),
HeaderText = "Department",
Filter = new IgbColumnFilterConfiguration
{
CaseSensitive = false
}
}Handle sorting and filtering events:
<IgbGridLite Data="@employees"
Columns="@columns"
Sorting="@HandleSorting"
Sorted="@HandleSorted"
Filtering="@HandleFiltering"
Filtered="@HandleFiltered" />
@code {
private void HandleSorting(IgbGridLiteSortingEventArgs e)
{
// Handle on sorting
}
private void HandleSorted(IgbGridLiteSortedEventArgs e)
{
// Handle after sort
}
private void HandleFiltering(IgbGridLiteFilteringEventArgs e)
{
// Handle on filtering
}
private void HandleFiltered(IgbGridLiteFilteredEventArgs e)
{
// Handle after filter
}
}The IgbColumnConfiguration class supports:
Key: Property name to bind to (usenameof()for type safety)HeaderText: Column header display textWidth: Column width (CSS value)Type: Data type (String, Number, Boolean, Date)Hidden: Hide columnResizable: Allow column resizingSort: Enable/configure sortingFilter: Enable/configure filtering
- .NET 8, 9, or 10 SDK
- Node.js (for building JavaScript bundle)
-
Restore dependencies:
dotnet restore
-
Build project:
dotnet build
The build process (configured in IgniteUI.Blazor.GridLite.csproj) automatically:
- Installs npm dependencies
- Builds the JavaScript bundle using Vite
- Copies theme files to wwwroot
A demo application is available in demo/GridLite.DemoApp/ showcasing various grid features and configurations.