【问题标题】:Custom pagination with stored procedure in asp.net使用 asp.net 中的存储过程自定义分页
【发布时间】:2014-11-11 07:24:28
【问题描述】:

我需要从数据库中获取大约 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

结束

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

消息 207,级别 16,状态 1,过程 uspGetTarnsactionPaging,第 18 行 列名“App_TransactionDetailsID”无效。

【问题讨论】:

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


    【解决方案1】:

    试试这个查询

    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
    

    【讨论】:

    • 查询执行成功但数据未显示.. :(
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-14
    • 2020-10-01
    • 1970-01-01
    • 2023-03-30
    • 2011-03-22
    相关资源
    最近更新 更多