Assuming that you're using SQLServer, it's better to change your stored procedure to just return the number of records that you require to display at any particular time rather than the whole data set.
The rough pattern for the sproc would be something like ...
CREATE PROCEDURE myQuery
@Start INT,
@End INT,
AS
SELECT ROW_NUMBER() OVER (ORDER BY orderField) AS RowNum, fieldList
FROM table
WHERE RowNum >= @Start AND RowNum < @End
ORDER BY RowNum
That would suppose that your app will carry out the paging calculations, alternatively, you could, if you wished, change the arguments to PageNumber and RecordsPerPage and do those calculations in the stored procedure.
Hope that's of some help.