You declare that you use viewstate to store the current page number, and by this I assume that you explicitly store this number in the viewstate.
However, asp.net will by default store a lot of data in the viewstate. In your example, having 3 controls with paging enabled, asp.net will store "all data in the control", that is, all data that is currently displayed in 3 controls will be stored in viewstate.
The solution to this problem may be to explicitly disable the "turn off" viewstate on the three displayed controls, unfortunately, this means that you will have to double-check the controls on each page, which may or may not be an option for you.
If you just need to save the page number, you can, for example, transfer it to a control state, as described in msdn and pluralsight .
Use the query suggested in another answer.
Or you could just keep using the viewstate and then go on to turn off the viewstate for the whole page or just paged-controls, whatever works for you.
I would really suggest reading the Truly Understanding Viewstate from Mrunal Brahmbhatt for a detailed explanation of the state of the views.
source share