I imagine there are many different ways to do this, some more efficiently & dynamically than others, but here's my attempt:
I used Superstore and started by creating a unique INDEX value for each row:
This calculation alone isn't enough to get the job done; I had to dive into the advanced calcs and sort it by the order I am displaying data, namely by State, by City:
This essentially indexed every State/City alphabetically:
Next I created a parameter to help us navigate the rows.
30 is just a number I chose to represent the maximum number of pages. Perhaps it's 1,000 for you... or undefined.
I made a quick variable to store the number of rows per page:
And (we're almost there) a calculation to determine if the current index (rows) fall within the user-selected page parameter:
I dropped Pager into my filters and set it to TRUE.
I also displayed the Page Parameter.
Now a user is able to step through the pages through use of the parameter.
The INDEX can be hidden, as it makes no sense to the user.
Let me know if you'd like to see a workbook of this.
This method is not ideal because the control is not truly dynamic: for example, if filtered data has only 10 pages, the use could still (in theory) try to view page 30
Nevertheless, I hope it gives you some inspiration.