分页的方法很多,现在介绍利用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代码
最后效果如图: