using Blazored.LocalStorage; using Blazorise.DataGrid; using HeartTrack.Models; using Microsoft.AspNetCore.Components; using Microsoft.Extensions.Localization; namespace HeartTrack.Pages { public partial class Reports { private List reports; private int totalReport; [Inject] public HttpClient Http { get; set; } [Inject] public NavigationManager NavigationManager { get; set; } [Inject] public ILocalStorageService LocalStorage { get; set; } [Inject] public IStringLocalizer Localizer { get; set; } protected override async Task OnAfterRenderAsync(bool firstRender) { // Do not treat this action if is not the first render if (!firstRender) { return; } var currentData = await LocalStorage.GetItemAsync("data"); // Check if data exist in the local storage if (currentData == null) { // this code add in the local storage the fake data (we load the data sync for initialize the data before load the OnReadData method) var originalData = Http.GetFromJsonAsync($"{NavigationManager.BaseUri}fake-data.json").Result; await LocalStorage.SetItemAsync("data", originalData); } } private async Task OnReadData(DataGridReadDataEventArgs e) { if (e.CancellationToken.IsCancellationRequested) { return; } // When you use a real API, we use this follow code //var response = await Http.GetJsonAsync( $"http://my-api/api/data?page={e.Page}&pageSize={e.PageSize}" ); var response = (await LocalStorage.GetItemAsync("data")).Skip((e.Page - 1) * e.PageSize).Take(e.PageSize).ToList(); if (!e.CancellationToken.IsCancellationRequested) { totalReport = (await LocalStorage.GetItemAsync>("data")).Count; reports = new List(response); // an actual data for the current page } } } }