在asp.net中使用存储过程自定义分页

时间:2014-11-11 07:24:28

标签: c# asp.net gridview stored-procedures pagination

我需要从数据库中获取大约40000行并绑定到gridview,之后这些数据需要导出到excel和PDF。 当我用简单的条纹程序绑定行时,它需要很长时间接近5-6分钟。 所以我为自定义分页编写了一个存储过程。

我的跟踪程序如下......

CREATE PROCEDURE [dbo].[uspGetTarnsactionPaging]
  @PageIndex INT = 1
  ,@PageSize INT = 10
  ,@RecordCount INT OUTPUT
AS
 BEGIN
   SET NOCOUNT ON;
  select   APP.AppName AS "Application Name",
  TRA.OS_Name as "OS",TRA.MSISDN,TRA.RequestDateTime AS "Request DateTime Stamp",
  TRA.ResponseDateTime AS "Reponse DateTime Stamp" ,TRA.IP,TRA.UserDetails,TRA.UserAgent,TRA.OperationType ,
  TRA.OperationDetails AS "Opperation Details",TRA.Status 
 INTO #Results
FROM TTSL_Application_Master APP INNER JOIN TTSL_ApplicationTransactionDetails_Master TRA     
ON APP.AppID=TRA.ApplicationID   
 WHERE  TRA.ApplicationID=2 AND TRA.RequestDateTime >= 2014-11-02 AND TRA.ResponseDateTime <= 2014-11-03
  SELECT ROW_NUMBER() OVER
  (
order by App_TransactionDetailsID
  )AS RowNumber


  SELECT @RecordCount = COUNT(*)
  FROM #Results

  SELECT * FROM #Results
  WHERE RowNumber BETWEEN(@PageIndex -1) * @PageSize + 1 AND(((@PageIndex -1) * @PageSize + 1) + @PageSize) - 1

  DROP TABLE #Results

END

当我执行存储过程时,显示以下错误..

  

Msg 207,Level 16,State 1,Procedure uspGetTarnsactionPaging,Line 18   列名称无效&#39; App_TransactionDetailsID&#39;。

1 个答案:

答案 0 :(得分:0)

尝试此查询

CREATE PROCEDURE [dbo].[uspGetTarnsactionPaging]
  @PageIndex INT = 1
  ,@PageSize INT = 10
  ,@RecordCount INT OUTPUT
AS
 BEGIN
   SET NOCOUNT ON;
  select ROW_NUMBER() OVER
  (
   order by App_TransactionDetailsID
  )AS RowNumber, APP.AppName AS "Application Name",
  TRA.OS_Name as "OS",TRA.MSISDN,TRA.RequestDateTime AS "Request DateTime Stamp",
  TRA.ResponseDateTime AS "Reponse DateTime Stamp" ,TRA.IP,TRA.UserDetails,TRA.UserAgent,TRA.OperationType ,
  TRA.OperationDetails AS "Opperation Details",TRA.Status 
 INTO #Results
FROM TTSL_Application_Master APP INNER JOIN TTSL_ApplicationTransactionDetails_Master TRA     
ON APP.AppID=TRA.ApplicationID   
 WHERE  TRA.ApplicationID=2 AND TRA.RequestDateTime >= 2014-11-02 AND TRA.ResponseDateTime <= 2014-11-03
Order by App_TransactionDetailsID Desc  


  SELECT @RecordCount = COUNT(*)
  FROM #Results

  SELECT * FROM #Results
  WHERE RowNumber BETWEEN(@PageIndex -1) * @PageSize + 1 AND(((@PageIndex -1) * @PageSize + 1) + @PageSize) - 1

  DROP TABLE #Results