Web Components Persistencia del estado de la cuadrícula jerárquica
La persistencia de estado Ignite UI for Web Components en Web Components cuadrícula jerárquica permite a los desarrolladores guardar y restaurar fácilmente el estado de la cuadrícula. Cuando se IgcGridState aplica en el Web Components IgcHierarchicalGridComponent, expone los GetState GetStateAsString métodos y ApplyState ApplyStateFromString que los desarrolladores pueden usar para lograr la persistencia de estado en cualquier escenario.
Funciones admitidas
IgcGridState permite guardar y restaurar el estado de las siguientes características:
RowIslands
guardar/restaurar funciones para todas las cuadrículas secundarias en la jerarquía
Clasificación
Filtración
AdvancedFiltering
Paginación
CellSelection
RowSelection
ColumnSelection
RowPinning
Expansión
Columns
Multi column headers
Orden de columnas
Column properties defined by the IColumnState interface.
Uso
El getState método devuelve el estado de la cuadrícula en un IgcGridStateInfo objeto, que contiene toda la información de estado. Es posible que se requieran pasos adicionales para guardarlo.
Devuelve GetStateAsString una cadena JSON serializada, por lo que los desarrolladores pueden tomarla 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.
var gridState = document.getElementById('gridState') as IgcGridStateComponent;
// get an `IgcGridStateInfo` object, containing all features original state objects, as returned by the grid public APIconst state: IgcGridStateInfo = gridState.getState();
// get all features` state in a serialized JSON stringconst stateString: string = gridState.getStateAsString();
// get the sorting and filtering expressionsconst sortingFilteringStates: IgcGridStateInfo = gridState.getState(['sorting', 'filtering']);
typescript
ApplyState- El método acepta un IgcGridStateInfo objeto como argumento y restaurará el estado de cada característica que se encuentre en el objeto o en las características especificadas como segundo argumento.
ApplyStateFromString- El método acepta una cadena JSON serializada como argumento y restaurará el estado de cada característica que se encuentre en la cadena JSON o en las características especificadas como segundo argumento.
El Options objeto implementa la IgcGridStateOptions interfaz, es decir, para cada clave, que es el nombre de una determinada característica, existe el valor booleano que indica si se realizará un seguimiento del estado de esta característica. GetState / GetStateAsString methods no colocará el estado de estas características en el valor devuelto y ApplyState / ApplyStateFromString methods no restaurará el estado de las mismas.
Las API de punto único fáciles de usar permiten lograr una funcionalidad de persistencia de estado completa en solo unas pocas líneas de código. Copie y pegue el código desde abajo: guardará el estado de la cuadrícula en el objeto del navegador LocalStorage cada vez que el usuario abandone la página actual. Cada vez que el usuario regrese a la página principal, se restaurará el estado de la cuadrícula. Ya no es necesario configurar esas complejas expresiones avanzadas de filtrado y ordenación cada vez para obtener los datos que desea: hágalo una vez y haga que el código de abajo haga el resto por sus usuarios:
constructor() {
window.addEventListener("load", () => { this.restoreGridState(); });
window.addEventListener("beforeunload", () => { this.saveGridState(); });
}
// Using methods that work with IgcGridStateInfo object.publicsaveGridState() {
const state = this.gridState.getState();
window.localStorage.setItem('grid-state', JSON.stringify(state));
}
publicrestoreGridState() {
const state = window.localStorage.getItem('grid-state');
if (state) {
this.gridState.applyState(JSON.parse(state));
}
}
// Or using string alternative methods.publicsaveGridStateString() {
const state = this.gridState.getStateAsString();
window.localStorage.setItem('grid-state', state);
}
publicrestoreGridStateString() {
const state = window.localStorage.getItem('grid-state');
if (state) {
this.gridState.applyStateFromString(state);
}
}
typescript
Restaurar redes secundarias
El estado de guardado/restauración de las cuadrículas secundarias está controlado por la RowIslands propiedad y está habilitado de forma predeterminada. IgcGridState utilizará las mismas opciones para guardar/restaurar características tanto para la cuadrícula raíz como para todas las cuadrículas secundarias de la jerarquía. Por ejemplo, si pasamos las siguientes opciones:
A continuación, la getState API devolverá el estado de todas las funciones de las cuadrículas (cuadrícula raíz y cuadrículas secundarias) excluyendo Selection y Sorting. Si más adelante el desarrollador desea restaurar solo el Filtering estado de todas las cuadrículas, use:
<!DOCTYPE html><html><head><title>Sample | Ignite UI | Web Components | infragistics</title><metacharset="UTF-8" /><linkrel="shortcut icon"href="https://static.infragistics.com/xplatform/images/browsers/wc.png" ><linkrel="stylesheet"href="https://fonts.googleapis.com/icon?family=Material+Icons" /><linkrel="stylesheet"href="https://fonts.googleapis.com/css?family=Kanit&display=swap" /><linkrel="stylesheet"href="https://fonts.googleapis.com/css?family=Titillium Web" /><linkrel="stylesheet"href="https://static.infragistics.com/xplatform/css/samples/shared.v8.css" /><linkrel="stylesheet"href="/src/index.css"type="text/css" /></head><body><divid="root"><divclass="sampleContainer"><divclass="container horizontal"><igc-buttonid="restoreState"variant="contained"><igc-iconname="restore"collection="material"></igc-icon>
Restore
</igc-button><igc-buttonid="saveState"variant="contained"><igc-iconname="save"collection="material"></igc-icon>
Save
</igc-button><igc-buttonid="resetState"variant="contained"><igc-iconname="clear"collection="material"></igc-icon>
Reset
</igc-button><igc-buttonid="leavePage"variant="contained"><igc-iconname="forward"collection="material"></igc-icon>
Leave
</igc-button><igc-buttonid="clearStorage"variant="contained"><igc-iconname="delete"collection="material"></igc-icon>
Clear
</igc-button><igc-buttonid="reloadPage"variant="contained"><igc-iconname="refresh"collection="material"></igc-icon>
Reload
</igc-button></div><divclass="container horizontal"><ul><li>Clicking the SAVE button or leaving the page <aid="leaveLink"href="./grids/hierarchical-grid/state-persistence-about"><strong>here</strong></a> will save grid state to localStorage.</li><li>Use the control buttons to SAVE / RESTORE / RESET / DELETE / grid state or LEAVE the page.</li><li>Select/Deselect checkboxes to control saving / restoring feature state.</li></ul></div><divclass="container horizontal"><igc-checkboxid="allFeatures"checked>All Features</igc-checkbox><igc-checkboxid="advancedFiltering"checked>Adv. Filtering</igc-checkbox><igc-checkboxid="cellSelection"checked>Cell Selection</igc-checkbox><igc-checkboxid="columns"checked>Columns</igc-checkbox><igc-checkboxid="columnSelection"checked>Col Selection</igc-checkbox><igc-checkboxid="expansion"checked>Expansion</igc-checkbox><igc-checkboxid="filtering"checked>Filtering</igc-checkbox><igc-checkboxid="paging"checked>Paging</igc-checkbox><igc-checkboxid="rowPinning"checked>Row Pinning</igc-checkbox><igc-checkboxid="rowSelection"checked>Row Selection</igc-checkbox><igc-checkboxid="sorting"checked>Sorting</igc-checkbox><igc-checkboxid="moving"checked>Moving</igc-checkbox><igc-checkboxid="rowIslands"checked>Row Island</igc-checkbox></div><igc-hierarchical-gridid="grid"name="grid"primary-key="Photo"width="98%"height="500px"auto-generate="false"moving="true"allow-filtering="true"><igc-grid-stateid="gridState"></igc-grid-state><igc-grid-toolbar><igc-grid-toolbar-actions><igc-grid-toolbar-hiding></igc-grid-toolbar-hiding><igc-grid-toolbar-pinning></igc-grid-toolbar-pinning></igc-grid-toolbar-actions></igc-grid-toolbar><igc-action-strip><igc-grid-pinning-actions></igc-grid-pinning-actions></igc-action-strip><igc-paginator></igc-paginator><igc-columnfield="Artist"sortable="true"></igc-column><igc-columndata-type="image"field="Photo"editable="false"sortable="true"></igc-column><igc-columnfield="Debut"data-type="number"sortable="true"></igc-column><igc-columnfield="GrammyNominations"header="Grammy Nominations"data-type="number"sortable="true"></igc-column><igc-columnfield="GrammyAwards"header="Grammy Awards"data-type="number"sortable="true"></igc-column><igc-row-islandheight="null"child-data-key="Albums"id="albumsRowIsland"auto-generate="false"primary-key="Album"allow-filtering="true"><igc-columnfield="Album"sortable="true"></igc-column><igc-columnfield="LaunchDate"header="Launch Date"data-type="date"sortable="true"></igc-column><igc-columnfield="BillboardReview"header="Billboard Review"sortable="true"></igc-column><igc-columnfield="USBillboard200"header="US Billboard 200"sortable="true"></igc-column><igc-row-islandheight="null"child-data-key="Songs"id="songsRowIsland"auto-generate="false"primary-key="Number"allow-filtering="true"><igc-columnfield="Number"header="No."sortable="true"></igc-column><igc-columnfield="Title"sortable="true"></igc-column><igc-columnfield="Released"data-type="date"sortable="true"></igc-column><igc-columnfield="Genre"></igc-column></igc-row-island></igc-row-island><igc-row-islandheight="null"child-data-key="Tours"id="toursRowIsland"auto-generate="false"primary-key="Tour"allow-filtering="true"><igc-columnfield="Tour"sortable="true"></igc-column><igc-columnfield="StartedOn"header="Started on"sortable="true"></igc-column><igc-columnfield="Location"sortable="true"></igc-column><igc-columnfield="Headliner"sortable="true"></igc-column></igc-row-island></igc-hierarchical-grid></div></div><!-- This script is needed only for parcel and it will be excluded for webpack -->
<% if (false) { %><scriptsrc="src/index.ts"></script><% } %>
</body></html>html
¿Te gusta esta muestra? Obtenga acceso a nuestro kit de herramientas de Ignite UI for Web Components completo y comience a crear sus propias aplicaciones en minutos. Descárgalo gratis.
Limitaciones
Al restaurar todas las características de la cuadrícula a la vez (mediante applyState una API sin parámetros), es posible que las propiedades de columna de la cuadrícula raíz se restablezcan a los valores predeterminados. Si esto sucede, restaure las columnas o la función de selección de columnas por separado después de eso: