现在的位置: 首页 > 综合 > 正文

利用AspNetPager分页

2012年12月21日 ⁄ 综合 ⁄ 共 1851字 ⁄ 字号 评论关闭

 

分页的方法很多,现在介绍利用AspNetPager进行分页

一、准备工作

1.首先需要到准备分页控件AspNetPager.dll,点击这里下载。

官方网址是:http://www.webdiyer.com/Controls/AspNetPager

2.利用存储过程进行分页

-- ============================================= 
-- Description:    分页,用到了ROW_NUMBER() 
--      适用于SQL Server 2005及以上数据库 
-- ============================================= 
create PROCEDURE [dbo].[proc_SplitPage] 
@tblName   varchar(255),       -- 表名 
@strGetFields varchar(1000) = '*', -- 需要返回的列,默认* 
@strOrder varchar(255)='',      -- 排序的字段名,必填 
@strOrderType varchar(10)='ASC', -- 排序的方式,默认ASC 
@PageSize   int = 10,          -- 页尺寸,默认10 
@PageIndex int = 1,           -- 页码,默认1 
@strWhere varchar(1500) = '' -- 查询条件 (注意: 不要加 where) 
AS

declare @strSQL   varchar(5000)

if @strWhere !='' 
set @strWhere=' where '+@strWhere

set @strSQL= 
'SELECT * FROM ('+ 
    'SELECT ROW_NUMBER() OVER (ORDER BY '+@strOrder+' '+@strOrderType+') AS pos,'+@strGetFields+' '+ 
    'FROM '+@tblName+' '+@strWhere+ 
') AS sp WHERE pos BETWEEN '+str((@PageIndex-1)*@PageSize+1)+' AND '+str(@PageIndex*@PageSize)

exec (@strSQL)

  

二、配置AspNetPager控件

1、在项目中添加对AspNetPager的引用,再把它添加到工具箱中。

2、拖放到到页面中需要的地方,或者直接手写,需要注意的是在页首加上Register标记

<%@ Register Assembly="AspNetPager" Namespace="Wuqi.Webdiyer" TagPrefix="webdiyer" %>

  

<webdiyer:AspNetPager ID="pager" runat="server" OnPageChanged="pager_PageChanged" CssClass="paginator"
    CurrentPageButtonClass="cpb" FirstPageText="首页" LastPageText="末页" NextPageText="下一页" 
    PrevPageText="上一页" ShowPageIndexBox="Never" PageSize="10"
    CustomInfoHTML="总计%RecordCount%条记录,共%PageCount%页,每页%PageSize%条" AlwaysShow="True" 
    ShowCustomInfoSection="Left">
</webdiyer:AspNetPager>

  

3、通过Postback方式分页首先要在页面加载的时候计算出数据源的总记录数。

pager.RecordCount = news.CalcCount();

在分页事件中进行数据绑定:

protected void pager_PageChanged(object sender, EventArgs e)
{
    BindData();
}

  

在数据绑定方法中,计根据页大小和页码取出对应的数据

private void BindGridView()
{
    int pageSize = pager.PageSize;
    int pageIndex = pager.CurrentPageIndex;

    GridView1.DataSource = news.Select(pageSize, pageIndex, "");
    GridView1.DataBind();
}

  

几处需要注意的地方:

ShowPageIndexBox="Never"  不显示输入文本框进行跳转

样式可以自己搭配,网上也有现成的CSS代码

最后效果如图:

pager

抱歉!评论已关闭.