You want to do the paging on the dataset itself or in the stored procedure? The problem with paging in a dataset is that all the data is returned from the server and loaded in memory now. The upside is that you can sort it anyway you like.
I personally prefer to do the paging in the stored procedure. Here is the general concept that I do in my paging queries:
--Create temp table as follows:
CREATE TABLE #tmp
UID INT IDENTITY,
SELECT JournalID FROM Journals WHERE GroupID = @GroupID
SELECT Journals.* FROM Journals INNER JOIN #tmp ON #tmp.JournalID = Journals.JournalID WHERE #tmp.ID BETWEEN @Begin AND @End