Try storing your data in a temp table as shown below
create PROCEDURE [dbo].[searchresult]
@PageIndex INT
,@PageSize INT
AS
BEGIN
SET NOCOUNT ON;
SELECT ROW_NUMBER() OVER
(
ORDER BY [id] ASC
)AS RowNumber
,[id]
,[title]
,[type]
,[cost]
,[date]
INTO #Results
FROM [test]
SELECT * FROM #Results
WHERE RowNumber BETWEEN @PageIndex and (@PageSize+@PageIndex)-1
DROP TABLE #Results
END