AspNetPager实现真分页+多种样式
真假分页
分页是Web应用程序中最常用到的功能之一。当从数据库中获取的记录远远超过界面承载能力的时候,使用分页可以使我们的界面更加美观,更加的用户友好。分页包括两种类型:真分页和假分页。 其中假分页就是从数据库中获取全部的想要检索的记录数,然后再显示给用户;而真分页则是根据页面的情况,检索特定页面要求内的记录。当然如果数据库中记录较少的话,真假分页的效果是不明显的;但是当数据库中记录远远超过我们所能理解的范围后,用假分页进行显示数据,则会造成时间和空间上的问题,系统的可访问性大打折扣;相对而言,使用真分页,检索特定页面要求的记录数目,则大大提高了系统的效率和可访问性;
AspNetPager控件
牛腩老师给我们提供了一种实现记录真分页的思路,在视频中并没有具体的代码实现。而我现在就和大家来共同学习一下牛腩老师的真分页功能;首先:下载AspNetPager控件(点击下载),下载好之后至于具体的如何引用DLL控件,如何添加控件到工具箱,这里就不赘述了,以前的VB学习已经涉及到过,实在不知道的可以百度哈~~~该控件几个重要的属性:
alwaysshow:总是显示分页控件;
PageSize:指定每页显示的记录数;
custominfosectionwidth:用户自定义信息区的宽度;
custominfotextalign:用户自定义信息区的对齐方式;
firstpagetext:第一页按钮上显示的文本;
horizontalalign:内容水平对齐方式;
lastpagetext:最后页按钮上显示的文本;
navigationbuttontype:第一页、下一页、最后一页按钮的类型;
nextpagetext:下一页按钮上显示的文本;
pageindexboxtype:指示页索引框的显示类型:有TextBOX和dropdownlist两种;
pagingbuttonspacing:导航页按钮的间距;
prevpagetext:上一页按钮的显示的文本;
showcustominfosection:显示当前页和总页信息,默认为不显示,值为LEFT时将显示在页索引前,为right时显示在页索引后;
showpageindexbox:指定页索引文本框或下拉框的显示方式;
textafterpageindexbox:指定页索引文本框或下拉框后的文本;
UrlPaging:是够使用URL传递分页的方式来分页;
textbeforepageindexbox:指定页索引文本框或下拉框前面显示的文本;
width:该控件的宽度;
CustomInfoHTML:指定要显示在用户自定义信息区的用户自定义HTML信息文本
当我们添加引用完毕,并添加控件到工具箱后,在界面拖入AspNetPager控件,然后看代码实现:
代码实现:
SQL存储过程:
USE [newssystem]
GO
/****** Object: StoredProcedure [dbo].[SelectPage] Script Date: 08/24/2013 12:31:03 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SelectPage] @startIndex integer,
@endIndex integer
AS
BEGIN
SET NOCOUNT ON;
with temptbl as ( SELECT ROW_NUMBER() OVER (ORDER BY id desc)AS 行号, *from news )
SELECT * FROM temptbl where 行号 between @startIndex and @endIndex
END
GO
D层执行存储过程:
#region 新闻分页 /// <summary>
/// 根据页数来实现新闻分页
/// </summary>
/// <param name="startIndex">开始值</param>
/// <param name="endIndex">结束值</param>
/// <returns>datatable</returns>
public DataTable SelectPage(int startIndex, int endIndex)
{
DataTable dt = new DataTable();
string cmdText = "SelectPage"; SqlParameter[] paras = new SqlParameter[] {
new SqlParameter("@startIndex", startIndex ),
new SqlParameter("@endIndex", endIndex)
}; dt = sqlhelper.ExecuteQuery(cmdText, paras, CommandType.StoredProcedure);
return dt;
}
#endregion
B层分页逻辑:
#region 新闻分页
/// <summary>
/// 新闻分页
/// </summary>
/// <param name="startIndex">记录开始值</param>
/// <param name="endIndex">记录结束值</param>
/// <returns></returns>
public DataTable SelectPage(int startIndex, int endIndex)
{
return ndao.SelectPage(startIndex, endIndex);
}
#endregion
Web层实现:
要使AspNetPager正常运行,只需要设置它的RecordCount属性的值,根据需要编写PageChanged事件处理程序
protected void Page_Load(object sender, EventArgs e)
{
AspNetPager1.RecordCount = new NewsManager().SelectAll().Rows.Count;
int startIndex = AspNetPager1.StartRecordIndex;
int endIndex = AspNetPager1.EndRecordIndex;
repNews.DataSource = new NewsManager().SelectPage(startIndex, endIndex);
repNews.DataBind();
} protected void AspNetPager1_PageChanged(object sender, EventArgs e)
{
int startIndex = AspNetPager1.StartRecordIndex;
int endIndex = AspNetPager1.EndRecordIndex;
repNews.DataSource = new NewsManager().SelectPage(startIndex, endIndex);
repNews.DataBind();
}
这样就实现简单的分页了;但是运行之后,效果感觉和次,因为那个控件的样式太让人作呕了,看下图:
个性化样式:
的确,样式有点寒碜~~~不过问题总比困难多,现在给提供几个美观大方的控件样式:
拍拍网分页控件样式(CSS样式表):
.paginator { font: 11px Arial, Helvetica, sans-serif;padding:10px 20px 10px 0; margin: 0px;}
.paginator a {padding: 1px 6px; border: solid 1px #ddd; background: #fff; text-decoration: none;margin-right:2px}
.paginator a:visited {padding: 1px 6px; border: solid 1px #ddd; background: #fff; text-decoration: none;}
.paginator .cpb {padding: 1px 6px;font-weight: bold; font-size: 13px;border:none}
.paginator a:hover {color: #fff; background: #ffa501;border-color:#ffa501;text-decoration: none;}
迅雷分页控件样式(CSS样式表):
.pages { color: #999; }
.pages a, .pages .cpb { text-decoration:none;float: left; padding: 0 5px; border: 1px solid #ddd;background: #ffff;margin:0 2px; font-size:11px; color:#000;}
.pages a:hover { background-color: #E61636; color:#fff;border:1px solid #E61636; text-decoration:none;}
.pages .cpb { font-weight: bold; color: #fff; background: #E61636; border:1px solid #E61636;}
aspx页面代码
:
<webdiyer:AspNetPager ID="AspNetPager1" runat="server" CssClass="paginator" AlwaysShow="True" AlwaysShowFirstLastPageNumber="True" ClientIDMode="Static" FirstPageText="首页" LastPageText="最后" NextPageText="后页" PageIndexBoxType="DropDownList" PageSize="5" PrevPageText="前页" Width="240px" HorizontalAlign="Justify" OnPageChanged="AspNetPager1_PageChanged"> </webdiyer:AspNetPager>
运行效果:
感触:
当然,样式不止这两个(更多样式),想起上次师哥批评的时候说我的话:给你个工具你不好好用~~~为此,当牛腩老师讲了那个AspNetPager网址的时候,好奇的点了点其他的页面,发现了这些相对来说更加美观的CSS样式,特此分享一下,顺便说一下:谢谢顺便学习法!
AspNetPager实现真分页+多种样式的更多相关文章
- ASP.NET真分页_接前篇引用AspNetPager.dll进行数据分页
一.前端准备工作 1.之前我写到过<Asp.net中引用AspNetPager.dll进行数据分页> 这种分页方式只能在前台将数据分页,而每次点击查询时对目标数据库还是全查询,这样不仅会 ...
- 使用第三方分页AspNetPager实现真正分页的SQL原理
AspNetPager是一个第三方分页第三方控件,可以和数据绑定控件(GridView等)方便的结合,实现真分页. 真分页:从数据库中获取符合要求的部分数目的记录.性能较高,数据量小,网络负载小,对数 ...
- ASP.NET真假分页—真分页
当数据量过大,有几万甚至十几万条数据时,每次都从数据库中取出所有数据就会降低查询效率,系统运行慢,还有可能卡死,这时假分页就会显得很不人性化,因此有了真分页的必要性. 正如上篇博文总结归纳,“真”相对 ...
- ASP.NET(五):ASP.net实现真分页显示数据
导读:在上篇文章中,介绍了用假分页实现数据的分页显示 ,而避免了去拖动滚动条.但,假分页在分页的同时,其实是拖垮了查询效率的.每一次分页都得重新查询一遍数据,那么有没有方法可以同时兼顾效率和分页呢,那 ...
- sql语句分页多种方式ROW_NUMBER()OVER
sql语句分页多种方式ROW_NUMBER()OVER 摘自: http://www.cnblogs.com/CodingArt/articles/1692468.html 方式一 select to ...
- [小技巧]让你的GridView支持IQueryable,并自动实现真分页
众所周知,asp.net自带的GridView在自带分页方面设计得很2,因为它是假分页,即内存分页.而且它不智能支持强大的Iqueryable. 但这表明微软忽略了现实中的分页需求吗?答案应该不是,我 ...
- Jsp分页实例---真分页
网页的分页功能的实现比较简单,实现方法也多种多样. 今天总结一个简单的Jsp真分页实例. 首先,提到分页就要先明确一个概念,何为真分页何谓假分页. 假分页:一次性从数据库读出表的所有数据一次性的返回给 ...
- Ext分页之php中,真分页显示
这是我经过很多天调试的真分页显示Ext组件 显示页面ext.php <html> <head> <meta http-equiv="Content-Type&q ...
- Ajax+存储过程真分页实例解析(10W数据毫秒级+项目解析)
周末闲来无事,突然想写个分页的东西玩玩,说走就走 在文章最后我会把整个项目+数据库附上,下载下来直接运行就可以看效果了.整个项目采用的是简单三层模式,开发平开是VS2010+SQL2012 一.我要做 ...
随机推荐
- 理解i-node
原文链接:http://www.ruanyifeng.com/blog/2011/12/inode.html 感觉讲得挺好,便做个记录.
- HDU_2019——向排序好的数列中插入数
Problem Description 有n(n<=100)个整数,已经按照从小到大顺序排列好,现在另外给一个整数x,请将该数插入到序列中,并使新的序列仍然有序. Input 输入数据包含多 ...
- HDU5029--Relief grain (树链剖分+线段树 )
题意:n个点构成的无根树,m次操作, 对于操作 x y z, 表示 x 到 y 路径上的 每个点 加一个 z 数字,可重复加.最后输出每个点 加的次数最多的那个数字,如果没有输出0. 赤裸裸的树链剖分 ...
- 关于我们 HerlMax(赫马克斯),奢侈品顶级服装高级定制品牌!
关于我们 HerlMax(赫马克斯),奢侈品顶级服装高级定制品牌! HerlMax品牌拥有着纯正悠远的意大利高级定制文化,带着对神秘东方的向往,荣耀登入中国市场.
- Java向上转型注意事项
继承.接口:Java子类中如果含有父类中不包含的变量与方法,子类对象向上转型时就是丢失这些变量和方法. interface SuperClass{ int i = 2; void f() ; } cl ...
- js中的函数,Date对象,Math对象和数组对象
函数就是完成某个功能的一组语句,js中的函数由关键字 function + 函数名 + 一组参数定义;函数在定义后可以被重复调用,通常将常用的功能写成一个函数,利用函数可以使代码的组织结构更多清晰. ...
- 【剑指Offer学习】【面试题56:链表中环的入口结点】
题目:一个链表中包括环.怎样找出环的入口结点? 解题思路 能够用两个指针来解决问题.先定义两个指针P1和P2指向链表的头结点.假设链表中环有n个结点,指针P1在链表上向前移动n步,然后两个指针以同样的 ...
- [RxJS] Observables can complete
The Observer object has the functions next() and error(). In this lesson we will see the other (and ...
- Android 基于Netty的消息推送方案之概念和工作原理(二)
上一篇文章中我讲述了关于消息推送的方案以及一个基于Netty实现的一个简单的Hello World,为了更好的理解Hello World中的代码,今天我来讲解一下关于Netty中一些概念和工作原理的内 ...
- linux stat命令
在Linux中,文件没有“创建时间”这个说法.Linux中的文件的时间属性只有三个:atime(Access time).mtime(Modified time).ctime(Change time) ...