Before I respond to this, I would like to ask if you intend to navigate forwards and backwards through your data. If the answer is yes then I'm sorry but Phylum's response won't work. The datareader is a one time use object, meaning that it reads your data a row at a time once, and then it is remanded to the care of the garbage collector. There are a couple of options, if you do intend a forward only read then Phylum's answer is probably the best, if you intend forward and backward navigation, then I would look at getting all your data into your dataset and then cloning your datatable from the dataset into a new datatable, and using the datatable.select method to copy rows from your source table into your cloned table, then use the datatable.clear method to clear out rows you copied there when you want to move to your next "page". The one issue you face here is that if your data at it's source is dynamic, then you will have to requery your source at whatever interval you determine to be satisifactory.
I hope this helps you. If you need further clarification, feel free to ask anytime.