Come ben sappiamo, nel template di default di Blazor, la pagina Weather.razor mostra dati tabellari creando dinamicamente una Table HTML5. Si tratta di un approccio sicuramente valido, ma che ci costringe a scrivere del codice aggiuntivo tutte le volte che vogliamo supportare funzionalità quali sorting o pagination.
Una veloce alternativa per questo tipo di necessità è costituita dal componente QuickGrid. Si tratta di un componente opzionale, che dobbiamo innanzitutto aggiungere referenziando il corretto NuGet package:
dotnet add package Microsoft.AspNetCore.Components.QuickGrid
A questo punto, possiamo modificare la pagina Weather.razor come nell'esempio in basso:
@page "/weather" @using Microsoft.AspNetCore.Components.QuickGrid @attribute [StreamRendering] @rendermode @(new InteractiveWebAssemblyRenderMode(prerender:false)) @if (forecasts == null) { <p><em>Loading...</em></p> } else { <QuickGrid Items="@forecasts" class="table"> <PropertyColumn Property="@(x => x.Date)" Format="yyyy-MM-dd" Sortable="true" IsDefaultSortColumn="true" InitialSortDirection="SortDirection.Ascending" /> <PropertyColumn Property="@(x => x.Summary)" Sortable="true" /> <PropertyColumn Property="@(x => x.TemperatureC)" Sortable="true" /> <PropertyColumn Property="@(x => x.TemperatureF)" /> </QuickGrid> } @code { private IQueryable<WeatherForecast> forecasts; // .. altro codice qui .. }
Innanzi tutto abbiamo aggiunto una direttiva @using per importare il namespace corretto, e poi - trattandosi di un componente interattivo - abbiamo specificato la RenderMode più appropriata (WebAssembly, nel nostro caso).
Poi abbiamo istanziato il componente QuickGrid, mettendolo in binding con il field forecasts: attenzione al fatto che QuickGrid supporta solo collection di tipo IQueryable - e non array come nel template di default.
Come possiamo notare, si possono specificare le colonne tramite lambda expression, e anche indicare quali di esse supportano il sorting, quali no, e quale deve essere quella di default.
Il risultato è sorprendentemente efficace, considerando la limitata mole di codice scritto:
![](https://www.aspitalia.com/script/images/1478.jpg)
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Registrare servizi multipli tramite chiavi in ASP.NET Core 8
Ottimizzare la latenza in Blazor 8 tramite InteractiveAuto render mode
Limitare le richieste lato server con l'interactive routing di Blazor 8
Eseguire un metodo asincrono dopo il set di una proprietà in Blazor 8
Usare le navigation property in QuickGrid di Blazor
Utilizzare il trigger SQL con le Azure Function
Usare un KeyedService di default in ASP.NET Core 8
Eseguire le GitHub Actions offline
Reactive form tipizzati con modellazione del FormBuilder in Angular
Utilizzare Copilot con Azure Cosmos DB
Paginare i risultati con QuickGrid in Blazor
Generare la software bill of material (SBOM) in GitHub
I più letti di oggi
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- Windows Server 2003 SP1 Italiano
- Creare un modulo e un controller con AngularJS
- Build 2014: tutte le novità per gli sviluppatori in diretta da San Francisco
- Rilasciata la versione RTM di Windows Vista SP1