Since the
stateSave parameter is set to true,
dataTables gets the paging information from the web store each time, causing the table to display the wrong page number (the last requested page number).
Workaround:
stateSave
: false.
Code Analysis:
- if ( oInit.bStateSave )
- {
- features.bStateSave = true;
- _fnLoadState( oSettings, oInit );
- _fnCallbackReg( oSettings, 'aoDrawCallback', _fnSaveState, 'state_save' );
- }
-------------------------------------------------- -------------------------------------------------- ----------------------------
_fnLoadState() function analysis:
- //Get the last page number information (state) from the cache,
- var state = settings.fnStateLoadCallback.call( settings.oInstance, settings );
- if ( ! state || ! state.time ) {
- return;
- }
- //state and ajaxData are encapsulated into new setttings. The setting contains: all parameter data of dataTables, ajaxData data, current paging information, etc.
- // Restore key features - todo - for 1.11 this needs to be done by
- // subscribed events
- settings._iDisplayStart = state.start;
- settings.iInitDisplayStart = state.start;
- settings._iDisplayLength = state.length;
- settings.aaSorting = [];
- _fnCallbackFire( settings, 'aoStateLoaded', 'stateLoaded', [settings, state] );
-------------------------------------------------- ------------------------------------------------
_fnSaveState( stttings) function analysis
- // bStateSave=true, take out the cached state. Otherwise, return directly
- if ( !settings.oFeatures.bStateSave || settings.bDestroying )
- {
- return;
- }
- /* Store the interesting variables */
- var state = {
- time: +new Date(),
- start: settings._iDisplayStart,
- length: settings._iDisplayLength,
- order: $.extend( true, [], settings.aaSorting ),
- search: _fnSearchToCamel( settings.oPreviousSearch ),
- columns: $.map( settings.aoColumns, function ( col, i ) {
- return {
- visible: col.bVisible,
- search: _fnSearchToCamel( settings.aoPreSearchCols[i] )
- };
- } )
- };