1.效果图&代码说明

 

1.效果图

 
 

2.代码说明

1.翻页按钮

        前台两个LinkButton(上一页、下一页),设置不同的CommandName、CommandArgument ,绑定同一个OnCommand事件,在后台OnCommand事件中分别处理

2.PagedDataSource

        将原始数据转为 DataView 然后绑定到 PagedDataSource,通过 PagedDataSource 的内置属性实现分页和翻页,最后再绑定到 Repeater上面
 

2.Code

 

1.front end

<asp:Repeater ID="RptrReview" runat="server" OnItemCommand="RptrReview_ItemCommand" OnItemDataBound="RptrReview_ItemDataBound"  >
......
</asp:Repeater>
<ul class="pager">
<li class="previous"><asp:LinkButton ID="LnkBtnPrevious" runat="server" OnCommand="RepeaterPageChange_Command" CommandName="Previous" CommandArgument="-1" >&larr; 上一页</asp:LinkButton></li>
<asp:Label ID="LblPageIndex" runat="server" Text="1" style="color:#428BCA;font-size:24px;"></asp:Label>
<li class="next"><asp:LinkButton ID="LnkBtnNext" runat="server" OnCommand="RepeaterPageChange_Command" CommandName="Next" CommandArgument="1">下一页 &rarr;</asp:LinkButton></li>
</ul>

2.code-behind

protected void RepeaterPageChange_Command(object sender, CommandEventArgs e)
{
PagedDataSource pds = new PagedDataSource();
pds.DataSource=GetReviewDV();// 将DataView绑定到PagedDataSource上
pds.AllowPaging = true; // 设置指示是否启用分页的值
pds.PageSize = ; // 设置要在每页显示的数量
int pageIndex=Convert.ToInt32(LblPageIndex.Text.ToString())-;
pds.CurrentPageIndex = pageIndex;//获取 PagedDataSource当前页码
if (e.CommandName=="Next"&&pds.IsLastPage)//已经是末页,还向下翻页的情况,跳过
{
RptrReview.DataSource = pds;
RptrReview.DataBind();
}
else if (e.CommandName == "Previous"&&pds.IsFirstPage)//已经是首页,还向上翻页的情况,跳过
{
RptrReview.DataSource = pds;
RptrReview.DataBind();
}
else//通过 e.CommandArgument 修改 PagedDataSource 页码
{
pageIndex = pageIndex + Convert.ToInt32(e.CommandArgument);
LblPageIndex.Text = (pageIndex + ).ToString();
pds.CurrentPageIndex = pageIndex; // 设置当前页的索引。
RptrReview.DataSource = pds;
RptrReview.DataBind();
}
}

3.兼容版

/// <summary>
/// 绑定RptrReview的第pageIndex页
/// </summary>
/// <param name="pageIndex"></param>
protected void BindRptrReview(ref int pageIndex)
{
PagedDataSource pds = new PagedDataSource();
pds.DataSource = GetReviewDV();
pds.AllowPaging = true; // 设置指示是否启用分页的值
pds.PageSize = ; // 设置要在每页显示的数量
//处理pageIndex极端情况
if(pageIndex<)
{
pageIndex=;
}
else if(pageIndex>(pds.PageCount-))
{
pageIndex=pds.PageCount-;
}
pds.CurrentPageIndex = pageIndex; // 设置当前页的索引。
RptrReview.DataSource = pds;
RptrReview.DataBind(); }
protected void RepeaterPageChange_Command(object sender, CommandEventArgs e)
{
int pageIndex = Convert.ToInt32(LblPageIndex.Text.ToString()) - ;
pageIndex = pageIndex + Convert.ToInt32(e.CommandArgument);
BindRptrReview(ref pageIndex);
LblPageIndex.Text = (pageIndex + ).ToString();
}
 
 

3.Reference

 

ASP.NET WebForm 通过 PagedDataSource 实现 Repeater 的分页的更多相关文章

  1. ASP.Net WebForm温故知新学习笔记:一、aspx与服务器控件探秘

    开篇:毫无疑问,ASP.Net WebForm是微软推出的一个跨时代的Web开发模式,它将WinForm开发模式的快捷便利的优点移植到了Web开发上,我们只要学会三步:拖控件→设属性→绑事件,便可以行 ...

  2. ASP.Net WebForm学习笔记:一、aspx与服务器控件探秘

    作者:周旭龙 出处:http://edisonchou.cnblogs.com 开篇:毫无疑问,ASP.Net WebForm是微软推出的一个跨时代的Web开发模式,它将WinForm开发模式的快捷便 ...

  3. ASP.NET WebForm

    ASP.NET WEBFORM Aspx aspx文件(新建项→Web窗体) .在aspx中可以使用<%=表达式%>的方式在页面的当前位置输出表达式(表达式至少要用protected级别, ...

  4. 【转载】ASP.Net WebForm温故知新学习笔记:一、aspx与服务器控件探秘

    开篇:毫无疑问,ASP.Net WebForm是微软推出的一个跨时代的Web开发模式,它将WinForm开发模式的快捷便利的优点移植到了Web开发上,我们只要学会三步:拖控件→设属性→绑事件,便可以行 ...

  5. 一、ASP.NET MVC 路由(一)--- ASP.NET WebForm路由模拟

    ASP.NET WebForm 应用,用户请求的是物理文件,其中包括静态页面和动态页面,在Url中的显示都是服务器中一个物理文件的相对路径.但是ASP.NET MVC就不同了,用户请求的是Contro ...

  6. (转)教你记住ASP.NET WebForm页面的生命周期

    对于ASP.NET Webform的开发者,理解ASP.NET Webform的页面生命周期是非常重要的.主要是为了搞明白在哪里放置特定的方法和在何时设置各种页面属性.但是记忆和理解页面生命周期里提供 ...

  7. 【深入ASP.NET原理系列】--Asp.Net Mvc和Asp.Net WebForm共用一套ASP.NET请求管道

    .NET FrameWork4在系统全局配置文件(如在如下目录中C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config) 中添加了一个名字叫Url ...

  8. 性能工具MiniProfiler在Asp.Net WebForm跟踪EntityFramework

    http://www.xuebuyuan.com/356638.html 选择MiniProfiler.EF 默认会把MiniProfiler安装上,笔者程序是Asp.Net WebForm 不需要安 ...

  9. 解析ASP.NET WebForm和Mvc开发的区别

    因为以前主要是做WebFrom开发,对MVC开发并没有太深入的了解.自从来到创新工场的新团队后,用的技术都是自己以前没有接触过的,比如:MVC 和EF还有就是WCF,压力一直很大.在很多问题都是不清楚 ...

随机推荐

  1. 为Docker配置阿里加速器,系统为Debian8

    先停止docker服务 service docker stop 设置阿里加速器 dockerd --registry-mirror=https://063eurcd.mirror.aliyuncs.c ...

  2. 关于webconsole报../website/console.go:35: undefined: ssh.InsecureIgnoreHostkey 错误解决方案

    1.首先,进入webconsole目录删除/opt/webconsole/src/golang.org/x/目录下 crypto文件夹 2.然后,在/opt/webconsole/src/golang ...

  3. Go语言极速入门手册

    Github: https://github.com/coderzh/CodeTips /* gotips_test.go: Golang速学速查速用代码手册 Source: github.com/c ...

  4. linux 添加静态路由

    Linux下静态路由修改命令方法一:添加路由route add -net 192.168.0.0/24 gw 192.168.0.1route add -host 192.168.1.1 dev 19 ...

  5. 机器学习实战 之 KNN算法

    现在 机器学习 这么火,小编也忍不住想学习一把.注意,小编是零基础哦. 所以,第一步,推荐买一本机器学习的书,我选的是Peter harrigton 的<机器学习实战>.这本书是基于pyt ...

  6. 关于微信分享到朋友圈(Thinkphp框架下实现)

    PHP部分 扩展类代码部分: <?php namespace Think; class JsSdk {       private $appId;       private $appSecre ...

  7. Codeforces785E - Anton and Permutation

    Portal Description 对一个长度为\(n(n\leq2\times10^5)\)的数列\(a\)进行\(m(m\leq5\times10^4)\)次操作,数列初始时为\(\{1,2,. ...

  8. OSQA的配置

    1.安装Python,我安装的是python 2.7.3 2.安装setuptools 下载setuptools,并安装 安装好以后,在pyton2.7/scripts的路径下将会有easy_inst ...

  9. 禁掉coolie,session还能正常使用吗?

    Cookie禁用了,Session还能用吗?   Cookie与 Session,一般认为是两个独立的东西,Session采用的是在服务器端保持状态的方案,而Cookie采用的是在客户端保持状态的方案 ...

  10. Storm日志分析调研及其实时架构

    1.Storm第一个Demo 2.Windows下基于eclipse的Storm应用开发与调试 3.Storm实例+mysql数据库保存 4.Storm原理介绍 5. flume+kafka+stor ...