AspNetPager是个不错的分页控件,它实现了对数据的分页而不关心数据是怎样产生的。准备引入项目之前,先对控件作者
陕北吴旗娃 致敬。
以下是以最简单的过程 来 体验 它的 主要功能:
首先:
http://topic.youkuaiyun.com/u/20081007/13/ee17b5f3-1f85-4b60-84cf-411563b96b6d.html
下载DLL,添加AspNetPager.dll引用,在“工具箱”右键单击“选择项”添加“AspNetPager.dll”文件。
其次:
界面上放入gridview和AspNetPager;
接下来的代码:
//获取并绑定数据
public void bind(int PageSize, int PageIndex)
{
//自定义获取数据的过程。这里使用了存储过程,第一个参数是PAGESIZE,第二个表示第几页,第一页是1。
string s = string.Format("EXEC sp_Consumer {0}, {1}", PageSize.ToString(), PageIndex.ToString());
GridView1.DataSource = MsSqlHelper.ExecuteDataSet(s).Tables[0];
GridView1.DataBind();
//显示记录信息
//AspNetPager1.CustomInfoHTML = "记录总数:" + AspNetPager1.RecordCount.ToString() + "";
//AspNetPager1.CustomInfoHTML += " 总页数:" + AspNetPager1.PageCount.ToString() + "";
//AspNetPager1.CustomInfoHTML += " 当前页:" + AspNetPager1.CurrentPageIndex.ToString() + "";
}
//加载页面
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
AspNetPager1.RecordCount = (int)MsSqlHelper.ExecuteScalar("SELECT COUNT(*) FROM TD_CONSUMER");
bind(AspNetPager1.PageSize, AspNetPager1.CurrentPageIndex);
}
}
//换页
protected void AspNetPager1_PageChanged(object sender, EventArgs e)
{
bind(AspNetPager1.PageSize, AspNetPager1.CurrentPageIndex);
}
OK了,呵呵。
体会:
1、对AspNetPager1设置RecordCount即可;
2、存储过程sp_Consumer 比较有意义:
EXEC sp_Consumer 20, 1
ALTER procedure sp_Consumer
(
@pagesize int,
@pageindex int
)
as
set nocount on
declare @indextable table(id int identity(1,1),nid int)
declare @PageLowerBound int
declare @PageUpperBound int
set @PageLowerBound=(@pageindex-1)*@pagesize
set @PageUpperBound=@PageLowerBound+@pagesize
set rowcount @PageUpperBound
insert into @indextable(nid) select ZID from TD_CONSUMER order by ZID desc
select * from TD_CONSUMER O,@indextable t where O.ZID=t.nid
and t.id between @PageLowerBound+1 and @PageUpperBound order by t.id
set nocount off