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样式,特此分享一下,顺便说一下:谢谢顺便学习法!




  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 17
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值