Persistencia del estado de la cuadrícula Blazor
La Ignite UI for Blazor State Persistence in Blazor Grid permite a los desarrolladores guardar y restaurar fácilmente el estado de la grid. Cuando se aplicaIgbGridState en el BlazorIgbGrid, expone losGetStateAsStringAsync métodos yApplyStateFromStringAsync que los desarrolladores pueden usar para lograr persistencia de estado en cualquier escenario.
Supported Features
IgbGridStateSoporta guardar y restaurar el estado de las siguientes características:
- Sorting
- Filtering
- Filtrado avanzado
- Paginación
- CellSelection
- RowSelection
- ColumnSelection
- RowPinning
- Expansión
- GroupBy
- Columns
- Multi column headers
- Orden de columnas
- Propiedades de columna definidas por la
IColumnStateinterfaz.
Usage
DevuelveGetStateAsStringAsync una cadena JSON serializada, así que los desarrolladores pueden simplemente usarla y guardarla en cualquier almacenamiento de datos (base de datos, nube, navegador localStorage, etc.).
El desarrollador puede optar por obtener solo el estado de una determinada característica o características, pasando una matriz con nombres de características como argumento. La matriz vacía dará como resultado el uso de las opciones de estado predeterminadas.
<IgbGrid>
<IgbGridState @ref="gridState"></IgbGridState>
</IgbGrid>
@code {
// get all features` state in a serialized JSON string
string stateString = gridState.GetStateAsStringAsync(new string[0]);
// get the sorting and filtering expressions
string sortingFilteringStates = gridState.GetStateAsStringAsync(new string[] { "sorting", "filtering" });
}
ApplyStateFromStringAsync- El método acepta una cadena JSON serializada como argumento y restaurará el estado de cada característica encontrada en la cadena JSON o características especificadas como segundo argumento.
gridState.ApplyStateFromStringAsync(gridStateString, new string[0]);
gridState.ApplyStateFromStringAsync(sortingFilteringStates, new string[0])
ElOptions objeto implementa laIgbGridStateOptions interfaz, es decir, para cada clave, que es el nombre de una determinada característica, existe el valor booleano que indica si este estado de la característica será rastreado.GetStateAsStringAsync Los métodos no pondrán el estado de estas características en el valor devuelto yApplyStateFromStringAsync los métodos no restaurarán el estado para ellas.
gridState.Options = new IgbGridStateOptions
{
CellSelection = false,
Sorting = false
};
Las APIs de punto único, sencillas de usar, permiten lograr una funcionalidad de persistencia completa de estado en solo unas pocas líneas de código. Copia y pega el código de abajo: guardará el estado de la cuadrícula en el objeto del navegadorLocalStorage cada vez que el usuario salga de la página actual. Cada vez que el usuario regresa a la página principal, el estado de la cuadrícula se restaurará. Ya no hace falta configurar esos complejos filtrados avanzados y ordenar expresiones cada vez para obtener los datos que quieres: hazlo una vez y el código de abajo hace el resto por tus usuarios:
@using IgniteUI.Blazor.Controls
@using Newtonsoft.Json
@implements IDisposable
@inject IJSRuntime JS
@inject NavigationManager Navigation
<IgbGrid Rendered="OnGridRendered">
<IgbGridState @ref="gridState"></IgbGridState>
<IgbColumn Field="ContactName" Header="Name" MinWidth="200px" ></IgbColumn>
<IgbColumn Field="ContactTitle" Header="Title" MinWidth="200px" Sortable="true" Filterable="true" Groupable="true"></IgbColumn>
<IgbColumn Field="CompanyName" Header="Company" MinWidth="200px" Sortable="true" Filterable="true" Groupable="true"></IgbColumn>
</IgbGrid>
@code {
protected override void OnAfterRender(bool firstRender)
{
Navigation.LocationChanged += OnLocationChanged;
}
void OnLocationChanged(object sender, LocationChangedEventArgs e)
{
SaveGridState();
}
void IDisposable.Dispose()
{
// Unsubscribe from the event when our component is disposed
Navigation.LocationChanged -= OnLocationChanged;
}
void OnGridRendered()
{
RestoreGridState();
}
async void SaveGridState() {
string state = gridState.GetStateAsStringAsync(new string[0]);
await JS.InvokeVoidAsync("window.localStorage.setItem", "grid-state", state);
}
async void RestoreGridState() {
string state = await JS.InvokeAsync<string>("window.localStorage.getItem", "grid-state");
if (state) {
gridState.ApplyStateFromStringAsync(state, new string[0]);
}
}
}
Demo
Limitations
GetStateAsStringel método utiliza JSON.stringify() para convertir los objetos originales en una cadena JSON. JSON.stringify() no soporta Functions, por eso elIgbGridStateComponent ignorará las columnasFormatter,Filters,Summaries,SortStrategy,CellClasses,CellStyles,HeaderTemplateyBodyTemplatePropiedades.