zoukankan      html  css  js  c++  java
  • 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样式,特此分享一下,顺便说一下:谢谢顺便学习法!




  • 相关阅读:
    html css 学习
    第七天
    第六天
    第五天
    第四天
    第三天
    第二天
    团队敏捷开发day8
    团队敏捷开发day7
    团队敏捷开发day6
  • 原文地址:https://www.cnblogs.com/james1207/p/3279779.html
Copyright © 2011-2022 走看看