由于设置s
tateSave参数为true,
dataTables每次分页信息从web store中获取,导致表格展现出错误的页码(上一次请求页码)。
解决办法:
s
tateSave:false。
代码分析:
- if ( oInit.bStateSave )
- {
- features.bStateSave = true;
- _fnLoadState( oSettings, oInit );
- _fnCallbackReg( oSettings, 'aoDrawCallback', _fnSaveState, 'state_save' );
- }
--------------------------------------------------------------------------------------------------------------------------------
_fnLoadState()函数分析:
- //从缓存中取上次页码信息(state),
- var state = settings.fnStateLoadCallback.call( settings.oInstance, settings );
- if ( ! state || ! state.time ) {
- return;
- }
- //state与ajaxData封装成新setttings,setting中包含:dataTables所有参数数据、ajaxData数据、当前分页信息等。
- // 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)函数分析
- // bStateSave=true,取出缓存state.否则直接返回
- 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] )
- };
- } )
- };