如题:DataPager 控件 的 效率 怎么样?
跟之前的GridView的分页是一样的吗?那么用 AspNetPager 会比 他们好吗?

解决方案 »

  1.   

    感觉都一样,要看你怎么写的!个人觉得主要还是查询的时候用分页的sql语句就好
      

  2.   

    那就是说
    DataPager 控件 
    跟之前的GridView的分页
    都是一次将所有数据查出来,放到内存里?
      

  3.   

    用个分页的存贮过程就好了
    ALTER PROCEDURE sp_Paging
    (
    @PageSize INT,
    @PageIndex INT,
    @sql NVARCHAR(2000),
    @OrderBy NVARCHAR(50),
    @order INT,
    @RecordCount INT OUTPUT,
    @PageCount INT OUTPUT
    )
    ASDECLARE @s NVARCHAR(4000)
    SET @S = 'SELECT COUNT(*) AS C INTO TEMP FROM (' + @sql + ') AS T'EXEC sp_executesql @s
    SELECT @RecordCount = C FROM [TEMP]
    DROP TABLE [TEMP]
    PRINT @RecordCountSET @PageCount = @RecordCount / @PageSize
    PRINT @PageCountDECLARE @Record INT
    SET @Record = @PageSize
    IF @RecordCount % @PageSize > 0 AND @PageIndex > @PageCount
    BEGIN 
    SET @Record = @RecordCount % @PageSize
    SET @PageCount = @PageCount + 1
    END
    IF @Order = 0
    BEGIN
    SET @S ='SELECT * FROM
    (
    SELECT TOP ' + CAST(@Record AS NVARCHAR(3)) + ' * FROM
    (
    SELECT TOP ' + CAST(@PageSize * @PageIndex AS NVARCHAR(10)) + ' * FROM (' + @sql + ') AS T ORDER BY ' + @OrderBy + ' ' + 'DESC
    ) AS T1 ORDER BY ' + @OrderBy + ' ASC
    ) AS T2 ORDER BY ' + @OrderBy + ' DESC'
    END
    ELSE
    BEGIN
    SET @S ='SELECT * FROM
    (
    SELECT TOP ' + CAST(@Record AS NVARCHAR(3)) + ' * FROM
    (
    SELECT TOP ' + CAST(@PageSize * @PageIndex AS NVARCHAR(10)) + ' * FROM (' + @sql + ') AS T ORDER BY ' + @OrderBy + ' ' + 'ASC
    ) AS T1 ORDER BY ' + @OrderBy + ' DESC
    ) AS T2 ORDER BY ' + @OrderBy + ' ASC'
    END
    PRINT @sEXEC sp_executesql @s
      

  4.   

    跟gridview自定义分页应该差不多
    提高效率就是用分页存储过程只获取一页数据
      

  5.   

    感觉都一样,要看你怎么写的!个人觉得主要还是查询的时候用分页的sql语句就好
    DataPager  好象不怎么写 sql 吧.那时候 我 给 他一个数据原测试 了 一下.
      

  6.   

    我明白你们的意思拉..
    就是说 DataPager 与 AspNetPager 的效率 基本 是一样的.
    DataPager 也 能 按 需 来取数据
      

  7.   

    好..非常感谢 GoldKi 这位  仁兄.