Soenneker.Quark.Table
3.0.3
Prefix Reserved
There is a newer version of this package available.
See the version list below for details.
See the version list below for details.
dotnet add package Soenneker.Quark.Table --version 3.0.3
NuGet\Install-Package Soenneker.Quark.Table -Version 3.0.3
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Soenneker.Quark.Table" Version="3.0.3" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Soenneker.Quark.Table" Version="3.0.3" />
<PackageReference Include="Soenneker.Quark.Table" />
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Soenneker.Quark.Table --version 3.0.3
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: Soenneker.Quark.Table, 3.0.3"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Soenneker.Quark.Table@3.0.3
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Soenneker.Quark.Table&version=3.0.3
#tool nuget:?package=Soenneker.Quark.Table&version=3.0.3
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
Soenneker.Quark.Table
A powerful, native Blazor table component with search, pagination, sorting, and server-side processing.
Features
- 🔍 Search: Real-time search with debouncing
- 📄 Pagination: First, previous, next, last, and direct page navigation
- 🔄 Sorting: Multi-column sorting with visual indicators
- ⚡ Server-Side Processing: Efficient data loading with continuation tokens
- 🎨 Customizable: Extensive styling and configuration options
- 📱 Responsive: Mobile-friendly design
- ♿ Accessible: Keyboard navigation and ARIA support
- 🔧 Multiple Modes: Server-side, manual, and direct data modes
Installation
dotnet add package Soenneker.Quark.Table
Register services in your Program.cs
:
using Soenneker.Quark.Table.Registrars;
builder.Services.AddQuarkTable();
Quick Start
Server-Side Mode
@using Soenneker.Quark.Table
@using Soenneker.Quark.Table.Dtos
<QuarkTable OnServerSideRequest="HandleServerSideRequest">
</QuarkTable>
@code {
private async Task<QuarkTableResponse> HandleServerSideRequest(QuarkTableRequest request)
{
// Your server-side processing logic here
var data = await GetDataAsync(request.Start, request.Length, request.Search?.Value);
return QuarkTableResponse.Success(
request.Draw,
totalRecords,
filteredRecords,
data
);
}
}
Manual Mode
<QuarkTable ManualMode="true"
OnManualRequest="HandleManualRequest"
TotalRecords="1000"
ShowSearch="true"
ShowPagination="true">
<ManualHeader>
<tr>
<th>ID</th>
<th>Name</th>
<th>Email</th>
</tr>
</ManualHeader>
<ManualBody>
@foreach (var item in items)
{
<tr>
<td>@item.Id</td>
<td>@item.Name</td>
<td>@item.Email</td>
</tr>
}
</ManualBody>
</QuarkTable>
@code {
private async Task HandleManualRequest(QuarkTableRequest request)
{
// Handle the request manually
// Update your data source based on request parameters
}
}
Direct Data Mode
<QuarkTable DirectData="@tableData"
ShowSearch="true"
ShowPagination="true">
</QuarkTable>
@code {
private List<List<string>> tableData = new()
{
new() { "ID", "Name", "Email" },
new() { "1", "John Doe", "john@example.com" },
new() { "2", "Jane Smith", "jane@example.com" }
};
}
Key Parameters
Parameter | Type | Description |
---|---|---|
OnServerSideRequest |
Func<QuarkTableRequest, Task<QuarkTableResponse>> |
Server-side data processing callback |
OnManualRequest |
EventCallback<QuarkTableRequest> |
Manual mode request callback |
ManualMode |
bool |
Enable manual mode (default: false) |
DirectData |
object |
Direct data for client-side processing |
ManualHeader |
RenderFragment |
Custom header content for manual mode |
ManualBody |
RenderFragment |
Custom body content for manual mode |
ShowSearch |
bool |
Show search input (default: true) |
ShowPagination |
bool |
Show pagination controls (default: true) |
ShowPageSizeSelector |
bool |
Show page size selector (default: true) |
Options |
QuarkTableOptions |
Table configuration options |
Configuration Options
var options = new QuarkTableOptions
{
Sortable = true,
DefaultPageSize = 10,
PageSizeOptions = [10, 25, 50, 100],
ShowPageSizeSelector = true,
ShowSearch = true,
SearchPlaceholder = "Search...",
SearchDebounceMs = 300,
SearchPosition = SearchPosition.End,
ShowPagination = true,
MaxPageButtons = 5,
ServerSide = true,
ShowInfo = true
};
Data Transfer Objects
QuarkTableRequest
public class QuarkTableRequest
{
public int Draw { get; set; }
public int Start { get; set; }
public int Length { get; set; }
public QuarkTableSearch? Search { get; set; }
public List<QuarkTableOrder>? Order { get; set; }
public string? ContinuationToken { get; set; }
}
QuarkTableResponse
public class QuarkTableResponse
{
public int Draw { get; set; }
public int TotalRecords { get; set; }
public int TotalFilteredRecords { get; set; }
public object? Data { get; set; }
public string? Error { get; set; }
public string? ContinuationToken { get; set; }
public static QuarkTableResponse Success(int draw, int totalRecords, int filteredRecords, object data, string? continuationToken = null);
public static QuarkTableResponse Fail(int draw, string errorMessage);
}
Event Callbacks
<QuarkTable OnServerSideRequest="HandleServerSideRequest"
OnSearch="HandleSearch"
OnPageSizeChanged="HandlePageSizeChanged"
OnGoToPage="HandleGoToPage"
OnOrder="HandleOrder"
OnInitialize="HandleInitialize">
</QuarkTable>
@code {
private async Task HandleSearch(string searchTerm)
{
// Handle search term changes
}
private async Task HandlePageSizeChanged(int pageSize)
{
// Handle page size changes
}
private async Task HandleGoToPage(int page)
{
// Handle page navigation
}
private async Task HandleOrder(QuarkTableOrderEventArgs args)
{
// Handle column sorting
}
private async Task HandleInitialize()
{
// Handle component initialization
}
}
Demo
Check out the live demo to see the component in action.
License
This project is licensed under the MIT License.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
net9.0
- Intellenum (>= 1.0.6)
- Microsoft.AspNetCore.Components.Web (>= 9.0.7)
- Soenneker.Blazor.Utils.ResourceLoader (>= 3.0.1482)
- Soenneker.Utils.Debounce (>= 3.0.3)
- Soenneker.Utils.Json (>= 3.0.2339)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last Updated |
---|---|---|
3.0.38 | 15 | 8/23/2025 |
3.0.37 | 23 | 8/22/2025 |
3.0.36 | 22 | 8/22/2025 |
3.0.35 | 92 | 8/21/2025 |
3.0.34 | 87 | 8/17/2025 |
3.0.33 | 98 | 8/15/2025 |
3.0.32 | 129 | 8/12/2025 |
3.0.31 | 126 | 8/12/2025 |
3.0.30 | 126 | 8/12/2025 |
3.0.29 | 127 | 8/12/2025 |
3.0.28 | 128 | 8/12/2025 |
3.0.27 | 129 | 8/12/2025 |
3.0.26 | 123 | 8/12/2025 |
3.0.25 | 129 | 8/12/2025 |
3.0.24 | 127 | 8/11/2025 |
3.0.23 | 131 | 8/11/2025 |
3.0.22 | 124 | 8/11/2025 |
3.0.21 | 202 | 8/7/2025 |
3.0.17 | 207 | 8/6/2025 |
3.0.16 | 200 | 8/6/2025 |
3.0.15 | 201 | 8/6/2025 |
3.0.14 | 201 | 8/6/2025 |
3.0.13 | 205 | 8/6/2025 |
3.0.12 | 214 | 8/6/2025 |
3.0.11 | 204 | 8/5/2025 |
3.0.10 | 209 | 8/5/2025 |
3.0.9 | 208 | 8/5/2025 |
3.0.8 | 208 | 8/5/2025 |
3.0.7 | 195 | 8/5/2025 |
3.0.6 | 188 | 8/5/2025 |
3.0.5 | 30 | 8/2/2025 |
3.0.4 | 34 | 8/1/2025 |
3.0.3 | 43 | 8/1/2025 |