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. 《CSS核心技术详解》

    前言 看似简单的CSS,却暗藏玄机,那是我们摸爬滚打好长时间后悟出的真理. 在很长的一段时间里,我并没有重视CSS,觉得CSS很简单,无非就是一些属性:后来才发现自己小看了CSS,对CSS的了解实在是 ...

  2. LeetCode - 661. Image Smoother

    Given a 2D integer matrix M representing the gray scale of an image, you need to design a smoother t ...

  3. C++函数返回值发生的对象复制

    最近用QT做一个监控系统的项目,需要显示目标的运动轨迹,每次目标移动后,就在目标的轨迹中(用vector记录)添加一条新轨迹. 但是在运行中画面里一直不出现轨迹,经过调试发现是记录轨迹的函数出错了. ...

  4. [Python Study Notes]CS架构远程访问获取信息--Client端v2.0

    更新内容: 1.增加内存信息获取 2.增加电池信息获取 3.增加磁盘信息获取 4.重新布局窗体 5.增加窗体名称 6.增加连接成功之前,不可按压 效果图: '''''''''''''''''''''' ...

  5. Hadoop源码分类概要整理

    最近突然觉得, 很多掌握的都还是很浅的原理,需要更深入细粒度去了解整个分布式系统的运转机制.于是..开始作死而又作死而又作死的源码之旅. Hadoop包的功能总共有下列几类: tool:提供一些命令行 ...

  6. Windows实用快捷键

    1 返回上一级目录:Backspace 2 复制当前窗口:Ctr + N 3 在当前文件目录中选定首个文件(夹):Space 4  切换窗口:Alt + Tab 5 当前浏览器Tab页倒退或前进历史页 ...

  7. backgroud背景色样式兼容ie8 rgba()用法

    今天遇到了一个问题,要在一个页面中设置一个半透明的白色div.这个貌似不是难题,只需要给这个div设置如下的属性即可: background: rgba(255,255,255,.1);但是要兼容到i ...

  8. Factorial数列的几种实现方式

    斐波那契数列很常见,实现的方法主要有递归,for,栈等,下面给出代码 import java.math.BigInteger; import java.util.Scanner; import jav ...

  9. centos 环境变量配置

    CentOS系统下如何将PHP和mysql命令加入到环境变量中,在Linux CentOS系统上 安装完php和MySQL后,为了使用方便,需要将php和mysql命令加到系统命令中,如果在没有添加到 ...

  10. java设计模式-----1、简单工厂模式

    简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一.简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例,简单来说 ...