Grid State Persistence
ZingGrid has the ability to preserve its state between page loads. This feature can easily be enabled by adding the preserve-state-id
to your grid!
Specify which states in preserve with preserve-state-options
.
Some of the states preserved are:
- Column position -
columnposition
- Column visibility -
columnvisibility
- Column width -
columnwidth
- Filter -
filter
- Frozen columns -
columnfrozen
- Frozen rows -
rowfrozen
- Layout -
layout
- Page -
page
- Page size -
pagesize
- Row group -
rowgroup
- Row Selector -
rowselector
- Search -
search
- Selector -
selector
- Sort -
sort
- More Coming!
Enabling State Persistence
To state preserving state on your grid, add the preserve-state-id
attribute to the <zing-grid>
tag. Set this attribute to a unique string that will be used as the ID to store the grid's state in. Grids with the same preserve-state-id
will share states.
<zing-grid preserve-state-id="featuresGridState"></zing-grid>
Grid with State
Here is a complete grid with state preserved:
Saving Specific States
You may not want to preserve all state in your grid. Use the preserve-state-options
attribute to specify which state(s) to preserve:
<zing-grid preserve-state-id="featuresGridState2" preserve-state-options="columnvisibility,filter,sort"> </zing-grid>
Custom State Functions
To trigger an action after the state changes, is to set the following attributes to the name of the function.
The attribute preserve-state-save
executes the specified function when the grid saves the state.
The function should contain two arguments:
- id - the id assigned to
preserve-state-id
- data - the state of the grid
There is also the preserve-state-load
attribute, which executes the function when state is loaded into the grid.
The function takes in one argument:
- id - the id assigned to
preserve-state-id
<zing-grid preserve-state-id="featuresGridState3" preserve-state-load="loadMe" preserve-state-save="saveMe"> </zing-grid> <script> function loadMe(id) { console.log('id: ', id); }; function saveMe(id, data) { console.log('id: ', id); console.log('data: ', data); }; </script>
Setting State
To update the state of the grid, use either of the API methods:
setState(data)
- Sets the current (all) statessetStateField(field, data)
- Sets the specified state
The best way to get the state data for loading into the grid is by using preserve-state-load
to retrieve the data.
<zing-grid preserve-state-id="featuresGridState4"></zing-grid> <script> // Set sort state let zgRef = document.querySelector('zing-grid'); zgRef.executeOnLoad(() => { zgRef.setState({"sort":{"index":"director","order":1}}); // alternatively // zgRef.setStateField('sort', {"index":"director","order":1}); }); </script>
[features: grid state persistence]