Hi,
I think there is bug with server sorting when triggered from external code https://snippet.webix.com/2qu7hp42
when clicking the button to sort programmatically, markSorting icon is changing but sorting is not happening
Hi,
I think there is bug with server sorting when triggered from external code https://snippet.webix.com/2qu7hp42
when clicking the button to sort programmatically, markSorting icon is changing but sorting is not happening
Hello, @mgraph2010
Currently, the sort
method only provides client-side sorting.
Server sorting (by clicking on the header, by changing the state) is performed by separate logic as a data reload.
As a solution for the issue, you could trigger server-side sort via state.
Please, check the snippet here Code Snippet
Hi @AlenaLisava
Thanks for your quick response. my code is much complicated than that snippet, I just created it to replicate the issue with sort()
when using server side loading.
I know about setState()
but the issue with this is that it makes an extra Ajax call when used in my code, I need to set the sort on firstonAfterRender
after pulling previous state from localStorage
.
I’ve tried this to prevent any events but it still makes the ajax call:
$$('datatable').blockEvent();
$$('datatable').setState({sort: { id: 'clicks', dir: 'asc' }});
$$('datatable').unblockEvent();
Thanks
I’ve found a workaround to double ajax call, I return false
in onDataRequest
to stop second ajax call when I change sort usingsetState
on initial load:
....
if (state.sort) {
this.dt_do_not_reload = true;
this.setState({ sort: state.sort });
}
...
onDataRequest: function (start, count) {
if (this.dt_do_not_reload) {
delete (this.dt_do_not_reload);
return false; // cancelling default behavior
}
},
...