ASP.NET WebForm 通过 PagedDataSource 实现 Repeater 的分页
1.效果图&代码说明
1.效果图

2.代码说明
1.翻页按钮
2.PagedDataSource
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" >← 上一页</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">下一页 →</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 的分页的更多相关文章
- ASP.Net WebForm温故知新学习笔记:一、aspx与服务器控件探秘
开篇:毫无疑问,ASP.Net WebForm是微软推出的一个跨时代的Web开发模式,它将WinForm开发模式的快捷便利的优点移植到了Web开发上,我们只要学会三步:拖控件→设属性→绑事件,便可以行 ...
- ASP.Net WebForm学习笔记:一、aspx与服务器控件探秘
作者:周旭龙 出处:http://edisonchou.cnblogs.com 开篇:毫无疑问,ASP.Net WebForm是微软推出的一个跨时代的Web开发模式,它将WinForm开发模式的快捷便 ...
- ASP.NET WebForm
ASP.NET WEBFORM Aspx aspx文件(新建项→Web窗体) .在aspx中可以使用<%=表达式%>的方式在页面的当前位置输出表达式(表达式至少要用protected级别, ...
- 【转载】ASP.Net WebForm温故知新学习笔记:一、aspx与服务器控件探秘
开篇:毫无疑问,ASP.Net WebForm是微软推出的一个跨时代的Web开发模式,它将WinForm开发模式的快捷便利的优点移植到了Web开发上,我们只要学会三步:拖控件→设属性→绑事件,便可以行 ...
- 一、ASP.NET MVC 路由(一)--- ASP.NET WebForm路由模拟
ASP.NET WebForm 应用,用户请求的是物理文件,其中包括静态页面和动态页面,在Url中的显示都是服务器中一个物理文件的相对路径.但是ASP.NET MVC就不同了,用户请求的是Contro ...
- (转)教你记住ASP.NET WebForm页面的生命周期
对于ASP.NET Webform的开发者,理解ASP.NET Webform的页面生命周期是非常重要的.主要是为了搞明白在哪里放置特定的方法和在何时设置各种页面属性.但是记忆和理解页面生命周期里提供 ...
- 【深入ASP.NET原理系列】--Asp.Net Mvc和Asp.Net WebForm共用一套ASP.NET请求管道
.NET FrameWork4在系统全局配置文件(如在如下目录中C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config) 中添加了一个名字叫Url ...
- 性能工具MiniProfiler在Asp.Net WebForm跟踪EntityFramework
http://www.xuebuyuan.com/356638.html 选择MiniProfiler.EF 默认会把MiniProfiler安装上,笔者程序是Asp.Net WebForm 不需要安 ...
- 解析ASP.NET WebForm和Mvc开发的区别
因为以前主要是做WebFrom开发,对MVC开发并没有太深入的了解.自从来到创新工场的新团队后,用的技术都是自己以前没有接触过的,比如:MVC 和EF还有就是WCF,压力一直很大.在很多问题都是不清楚 ...
随机推荐
- vue项目基本流程
一.做项目基本流程: 1.规划组件结构 Nav.vue Header.vue Home.vue..... 2.编写对应路由 vue-router 3.具体些每个组件功能 一些公共的文件jquery,j ...
- [实例]JAVA调用微信接口发送图文消息,不用跳到详情页
package com.test; import java.io.IOException; import java.io.InputStream; import java.io.OutputStrea ...
- js作用域的相关知识
众所周知,在ES6之前,JavaScript是没有块级作用域的,如下图所示: 学过其他语言的同学肯定有点诧异,为什么会这样呢?因为js还是不同于其他语言的,在ES5中,只有全局作用域和函数作用域,并没 ...
- 携程Apollo(阿波罗)配置中心在.NET Core项目快速集成
.NET Core的支持文档大体上可以参考文档.Net客户端使用指南:https://github.com/ctripcorp/apollo/wiki/.Net%E5%AE%A2%E6%88%B7%E ...
- CentOS 7 NetworkManager Keeps Overwriting /etc/resolv.conf
In CentOS or Red Hat Enterprise Linux (RHEL) 7, you can find your /etc/resolv.conf file, which holds ...
- css 把图片变为为黑白
img{ -webkit-filter: grayscale(100%); -moz-filter: grayscale(100%); -ms-filter: grayscale(100%); -o- ...
- ElasticSearch Kibana 和Logstash 安装x-pack记录
前言 最近用到了ELK的集群,想想还是用使用官方的x-pack的monitor功能对其进行监控,这里先上图看看: 环境如下: 操作系统: window 2012 R2 ELK : elasticsea ...
- jq自定义多选下拉列表框
多选选择国家插件 https://gitee.com/richard1015/dropDownList
- java多线程编程——锁优化
并发环境下进行编程时,需要使用锁机制来同步多线程间的操作,保证共享资源的互斥访问.加锁会带来性能上的损坏,似乎是众所周知的事情.然而,加锁本身不会带来多少的性能消耗,性能主要是在线程的获取锁的过程.如 ...
- Spark DataFrame写入HBase的常用方式
Spark是目前最流行的分布式计算框架,而HBase则是在HDFS之上的列式分布式存储引擎,基于Spark做离线或者实时计算,数据结果保存在HBase中是目前很流行的做法.例如用户画像.单品画像.推荐 ...