Sorting Custom Paged Results in GridView

I am using this procedure to implement pageing and sorting in my gridview

ALTER PROC [dbo].[dbWBS_usp_DisplayCertificatesDetails]
(
@PageNum BIGINT=1,
@PageSize BIGINT=10,
@OrderBy VARCHAR(50)='Certificate_Id',
@TotalRowsNum BIGINT=0 OUTPUT
)
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
DECLARE @Query VARCHAR(1024);
SET @Query = 'SELECT * FROM
(
SELECT ''ID1'' = ROW_NUMBER() OVER (ORDER BY '+ @OrderBy +'),Certificate_ID, Issue_Authority, Cert_Type,
Req_Authority, CONVERT(VARCHAR(12), Install_Date, 109) AS Install_Date,
CONVERT(VARCHAR(12), Expire_Date, 109) AS Expire_Date,
CONVERT(VARCHAR(12), Notify_Date, 109) AS Notify_Date,
(SELECT Dept_name FROM tbl_Department_Master where dept_id = Department) as DepartmentName
FROM tbl_Certificate_Master
WHERE IsDelete = 0
)
AS Temp WHERE ID1 BETWEEN '+CAST(((@PageNum - 1) * @PageSize + 1) AS VARCHAR(10)) +' AND '+
CAST((@PageNum * @PageSize)AS VARCHAR(10)) + ''

-- Execute the Query
EXEC (@Query)
-- Return Total Records Numbers
SELECT @TotalRowsNum=COUNT(Certificate_ID) FROM tbl_Certificate_Master WHERE IsDelete = 0
END

The paging is working absolutely fine but while sorting, it sorts the entire record instead of the record displayed in the page. Can someone help me in solving this??
[1610 byte] By [maverick786us] at [2007-11-20 11:00:16]