I’m trying to use a Blazorise data grid with data from an external source (SQL Server database) and pagination. Please let me know what’s wrong with the code below, since OnReadData is never run. This is a test page, hence some values (TotalItems…etc…) are hardcoded. I’m using .NET 8.0.
@page "/DataGridTest"
@using DataAccessLibrary;
@using DataAccessLibrary.Models;
@using Microsoft.AspNetCore.Identity;
@using BlazorLightsTest.Areas.Identity.Data;
@using Blazorise.DataGrid;
@using Blazorise.DataGrid.Extensions;
@inject SQLDataAccess _db;
@inject NavigationManager _navmanager;
@inject AuthenticationStateProvider _authenticationStateProvider;
@inject UserManager<BlazorLightsTestUser> _userManager;
@inject SignInManager<BlazorLightsTestUser> SignInManager
@if (@isLoggedIn) {
@if (@userDevices == null) {
<p><em>No data</em></p>
}
@if (SignInManager.Context.User.IsInRole("Member")) {
<DataGrid TItem="Device" Data="devList" ReadData="OnReadData" PageSize="@pagesize" TotalItems="4" ShowPager ShowPageSizes Responsive>
<DataGridColumn />
<DataGridColumn Field="@nameof(Device.Description)" Caption="Name" />
<DataGridColumn Field="@nameof(Device.StreetAddress)" Caption="Address" />
</DataGrid>
}
else {
<p><em>You're not an member. Go away.</em></p>
}
}
else {
<p><em>Please log in to see your devices.</em></p>
}
@code {
private List<Device>? devList;
private int deviceCount;
private int pagesize = 2;
private int pagenum = 1;
private string? userEmail;
private bool isLoggedIn;
protected override async Task OnInitializedAsync() {
base.OnInitialized();
var authState = await _authenticationStateProvider.GetAuthenticationStateAsync();
var user = authState.User;
if (user.Identity?.IsAuthenticated == false) {
isLoggedIn = false;
}
else {
isLoggedIn = true;
userEmail = user.Identity.Name;
}
}
private List<Device> userDevices(int page, int pageSize) {
return _db.GetUserDevices(page, pageSize, userEmail);
}
private void OnReadData(DataGridReadDataEventArgs<Device> e) {
if (!e.CancellationToken.IsCancellationRequested) {
List<Device> response = userDevices(e.Page, e.PageSize);
if (!e.CancellationToken.IsCancellationRequested) {
devList = response;
}
}
}
}