if you mean better way by easy way, then saving grid state in local storage is lot easier than saving it in remote state.
In case of remote storage individual state is saved corresponding to every user. User is identified by session id or user login id.
If you want to use query string, it's expected/assumed that you have prior experience in using it.
If your state has lot of info, then you may face problem since query string has limited length depending upon browser.
POST requests are safest bet to send data ( grid state ) to the server.
For database/ remote storage of state, it would remain same as
https://paramquery.com/pro/demos/grid_state except the part where saveState and loadState is called.
Instead of simple grid.saveState()
var state = grid.saveState({save: false}); //returns state string.
//post or send as qs the state string to remote store via Ajax call $.ajax
//on remote server, save the state in remote server corresponding to session id of the user.
Instead of simple grid.loadState()
//get state string from remote store via Ajax call.
and call grid.loadState({state: state}); in Ajax success callback.
My goal is the possibility to create URLs from selected filters etc (everything in saveState) and then load it through qs once the URL is visited.
your implementation plan is not clear enough. Could you please provide more details / example?