`
charrysong
  • 浏览: 50409 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

自己写的repeater 分页控件(附源码下载)欢迎拍砖

    博客分类:
  • C#
阅读更多

C#.NET我是个新手。前几天跟同事在做项目时,用了Repeater控件来实现,因为以前都是用AspNetPager。不过这样就带来一个新问题: 怎么分页?Repeater没有内置的分页功能。想写个自己的分页控件,名声好听些,后来后来在网上找了一些分页功能的资料,然后就自己写了一个,功能都 按我的想法做出来了。本人从事美工做.net还没有1年时间,因为主要是做美工哪位高手有何高见请及时指正,很愿意与各位交流!(欢迎拍砖)(下载地址在 文章最下面!)

效果如图:

tools/pages.ascx控件前台代码

C#代码
  1. <%@ Control Language= "C#"  AutoEventWireup= "true"  CodeFile= "pages.ascx.cs"  Inherits= "tools_page"  %>  
  2. <div class = "vc clearfix" >  
  3.         <p>当前第  <asp:Label ID="crpage"  runat= "server"  Text= "Label" ></asp:Label>  页 / 共  <asp:Label ID= "pgcount"  runat= "server"  Text= "" ></asp:Label>   
  4.          页  总共<asp:Label ID="jlcount"  runat= "server"  Text= "" ></asp:Label>条记录  </p><asp:HyperLink ID= "HLfst"  runat= "server"  CssClass= "fst" ></asp:HyperLink><asp:HyperLink ID= "HLpre"  runat= "server"  CssClass= "pre" ></asp:HyperLink>  
  5. <%= pagehtml %><asp:HyperLink ID="HLnext"  runat= "server"  CssClass= "next" ></asp:HyperLink><asp:HyperLink ID= "HLlst"  runat= "server"  CssClass= "lst" ></asp:HyperLink>  
  6. </div>  

tools/pages.ascx.cs控件后台代码

C#代码
  1. using  System;  
  2. using  System.Data;  
  3. using  System.Web.UI.WebControls;  
  4.   
  5. public  partial  class  tools_page : System.Web.UI.UserControl  
  6. {  
  7.     public   string  pagehtml =  "" ;  
  8.     public   int  pagenum = 5; //设置每个分组有多少页码   
  9.     int  startindex = 1; //起始页码   
  10.     protected   void  Page_Load( object  sender, EventArgs e)  
  11.     {}  
  12.     public   void  showthanklist(DataTable dt, Repeater Repeater1,  int  curpage,  string  cururl, string  abso, int  pagesize)  
  13.     {  
  14.         //分页核心代码   
  15.         PagedDataSource pagedata = new  PagedDataSource();  
  16.         //DataTable dt = LoadRepeater(id.ToString());   
  17.   
  18.         pagedata.DataSource = dt.DefaultView;  
  19.         pagedata.PageSize = pagesize;  
  20.         pagedata.AllowPaging = true ;  
  21.         int  half = 1;  
  22.         while  ((half + 1) * 2 < pagenum) { half++; }  
  23.         int  start = 1;  
  24.         int  end = 1;  
  25.   
  26.         if  (curpage > pagedata.PageCount || curpage < 1) curpage = 1;  
  27.         pagedata.CurrentPageIndex = curpage - 1;  
  28.         //如果页面总数小于分组数量.   
  29.         if  (pagenum >= pagedata.PageCount)  
  30.         { end = pagedata.PageCount; getPageindex(start, end, curpage, cururl, pagesize); }  
  31.         else   
  32.         {  
  33.             if  (curpage - half > 0)  
  34.             {  
  35.                 start = curpage - half;  
  36.                 if  (curpage + half > pagedata.PageCount)  
  37.                 {  
  38.                     start = pagedata.PageCount - pagenum + 1;  
  39.                     end = pagedata.PageCount;  
  40.                 }  
  41.                 else   
  42.                     end = curpage + half;  
  43.   
  44.             }  
  45.             else   
  46.             {  
  47.                 start = 1;  
  48.                 end = pagenum > pagedata.PageCount ? pagedata.PageCount : pagenum;  
  49.             }  
  50.   
  51.             getPageindex(start, end, curpage, cururl, pagesize);  
  52.         }  
  53.         jlcount.Text = Convert.ToString(dt.Rows.Count);  
  54.         crpage.Text = Convert.ToString(curpage);  
  55.         pgcount.Text = Convert.ToString(pagedata.PageCount);  
  56.         if  (pagedata.PageCount == 1)  //如果只有一个分组   
  57.         {  
  58.             HLpre.CssClass = "prefalse" ;  
  59.             HLnext.CssClass = "nextfalse" ;  
  60.             HLfst.CssClass = "fstfalse" ;  
  61.             HLlst.CssClass = "lstfalse" ;  
  62.         }  
  63.         else   if  (curpage == pagedata.PageCount && curpage > 1) //如果当前分组是最后一个分组   
  64.         {  
  65.             HLpre.Enabled = true ;  
  66.             HLnext.Enabled = false ;  
  67.             HLpre.NavigateUrl = abso + cururl + "page="  + (curpage - 1);  
  68.             HLfst.Enabled = true ;  
  69.             HLfst.NavigateUrl = abso + cururl + "page=1" ;  
  70.             HLfst.Enabled = true ;  
  71.             HLfst.NavigateUrl = abso+ cururl + "page=1" ;  
  72.             HLnext.CssClass = "nextfalse" ;  
  73.             HLlst.CssClass = "lstfalse" ;  
  74.         }  
  75.         else   if  (curpage == 1 && curpage < pagedata.PageCount)  
  76.         {  
  77.             HLpre.Enabled = false ;  
  78.             HLnext.Enabled = true ;  
  79.             HLfst.Enabled = false ;  
  80.             HLlst.Enabled = true ;  
  81.             HLlst.NavigateUrl = abso + cururl + "page="  + Convert.ToString(pagedata.PageCount);  
  82.             HLnext.NavigateUrl = abso + cururl + "page="  + (curpage + 1);  
  83.             HLfst.CssClass = "fstfalse" ;  
  84.             HLpre.CssClass = "prefalse" ;  
  85.         }  
  86.         if  (curpage > 1 && curpage < pagedata.PageCount) //如果当前分组处在中间   
  87.         {  
  88.             HLpre.Enabled = true ;  
  89.             HLpre.NavigateUrl = abso + cururl + "page="  + (curpage - 1);  
  90.             HLnext.NavigateUrl = abso + cururl + "page="  + (curpage + 1);  
  91.             HLnext.Enabled = true ;  
  92.             HLfst.Enabled = true ;  
  93.             HLfst.NavigateUrl = abso + cururl + "page=1" ;  
  94.             HLlst.Enabled = true ;  
  95.             HLlst.NavigateUrl = abso + cururl + "page="  + Convert.ToString(pagedata.PageCount);  
  96.         }  
  97.         Repeater1.DataSource =  pagedata;  
  98.         Repeater1.DataBind();  
  99.     }  
  100.     //设置分页样式   
  101.     private   void  getPageindex( int  start,  int  end,  int  curpage, string  cururl, int  pagesize)  
  102.     {  
  103.         pagehtml = "" ;  
  104.         for  ( int  i = start; i <= end - 1; i++)  
  105.         {  
  106.             if  (curpage == i) { pagehtml +=  "<b href=‘"  + cururl +  "page="  + Convert.ToString(i + startindex - 1) +  "‘ class=‘aa"  + Convert.ToString(i + startindex - 1) +  "‘>"  + Convert.ToString(i + startindex - 1) +  "</b>" ; }  
  107.             else   
  108.                 pagehtml += "<a href=‘"  + cururl +  "page="  + Convert.ToString(i + startindex - 1) +  "‘ class=‘a"  + Convert.ToString(i + startindex - 1) +  "‘>"  + Convert.ToString(i + startindex - 1) +  "</a>" ;  
  109.   
  110.         }  
  111.         if  (curpage == end) { pagehtml +=  "<b id=‘lastid‘ href=‘"  + cururl +  "page="  + Convert.ToString(end + startindex - 1) +  "‘ class=‘aa"  + Convert.ToString(end + startindex - 1) +  "‘>"  + Convert.ToString(end + startindex - 1) +  "</b>" ; }  
  112.         else   
  113.         {  
  114.             pagehtml += "<a id=‘lastid‘ href=‘"  + cururl +  "page="  + Convert.ToString(end + startindex - 1) +  "‘ class=‘a"  + Convert.ToString(end + startindex - 1) +  "‘>"  + Convert.ToString(end + startindex - 1) +  "</a>" ;  
  115.         }  
  116.     }   
  117. }  

DEMO.aspx前台代码

C#代码
  1. <%@ Page Language= "C#"  AutoEventWireup= "true"  CodeFile= "DEMO.aspx.cs"  Inherits= "DEMO"  %>  
  2. <%@ Register Src="tools/pages.ascx"  TagName= "pages"  TagPrefix= "uc1"  %>  
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >  
  4.   
  5. <html xmlns="http://www.w3.org/1999/xhtml" >  
  6. <head runat="server" >  
  7.     <title>我的分页控件-幸凡在线学习网</title>  
  8.     <link href="css/index.css"  rel= "stylesheet"  type= "text/css"  />  
  9. </head>  
  10. <body>  
  11.     <form id="form1"  runat= "server" >  
  12.     <div class = "com" >  
  13.         <ul>  
  14.             <asp:Repeater ID="art_list"  runat= "server" >  
  15.                 <ItemTemplate>  
  16.                     <li>  
  17.                         <a href="http://www.ok22.org/art_detail.aspx?id=<%# Eval(" id ") %>"  title= "<%# Eval(" title ") %>" ><%# Eval( "title" ) %></a>  
  18.                     </li>  
  19.                 </ItemTemplate>  
  20.             </asp:Repeater>  
  21.         </ul>  
  22.         <uc1:pages ID="pages1"  runat= "server"  />  
  23.         </div>  
  24.     </form>  
  25. </body>  
  26. </html>  

DEMO.aspx.cs后台代码

C#代码
  1. using  System;  
  2. using  System.Data;  
  3. using  System.Data.OleDb;  
  4. public  partial  class  DEMO : System.Web.UI.Page  
  5. {  
  6.     string  cururl =  "DEMO.aspx?" ; //当前页面链接   
  7.     public   int  curpage = 0; //初始页   
  8.     public   int  pagesize = 10;  //设置每页显示多少条记录   
  9.     protected   void  Page_Load( object  sender, EventArgs e)  
  10.     {  
  11.         //获取当前页码   
  12.         if  (! this .IsPostBack)  
  13.         {  
  14.             if  (Request.Params[ "page" ] ==  null )  
  15.                 curpage = 1;  
  16.             else   
  17.             {  
  18.                 string  temp = Request.Params[ "page" ].ToString();  
  19.                 curpage = Convert.ToInt32(temp);  
  20.             }  
  21.   
  22.         }  
  23.         DataTable dt = art_table();  
  24.         //showthanklist(DataTable dt, Repeater Repeater1, int curpage, string cururl,string abso,int pagesize)使用方法   
  25.         //dt:是DatatTable,art_list:前台显示Repeater的ID,curpage:当前页,cururl:当前页面的链接,abso:相对于tools里面的使用路径因为是在根目录调用所以需要加../,pagesize:每页显示多少条   
  26.         pages1.showthanklist(dt, art_list, curpage, cururl, "../" , pagesize);  
  27.     }  
  28.     //查出所有文章数据   
  29.     public  DataTable art_table()  
  30.     {  
  31.         string  sql= "" ;              
  32.          sql = "select * from art order by id desc" ;  
  33.         DataTable btab = selects(sql);  
  34.         return  btab;  
  35.     }  
  36.     //创建数据库链接   
  37.     public  OleDbConnection GetConnection()  
  38.     {  
  39.         try   
  40.         {  
  41.             OleDbConnection myconn = new  OleDbConnection( "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\\#ex.mdb;Jet OLEDB:Database Password=" );  
  42.             myconn.Open();  
  43.             return  myconn;  
  44.         }  
  45.         catch  (System.Data.OleDb.OleDbException e)  
  46.         {  
  47.             string  aa = e.Message;  
  48.             return   null ;  
  49.         }  
  50.     }  
  51.     //查询记录   
  52.     public  DataTable selects( string  sql)  
  53.     {  
  54.         OleDbCommand sc = new  OleDbCommand(sql, GetConnection());  
  55.         OleDbDataAdapter ad = new  OleDbDataAdapter(sc);  
  56.         DataSet ds = new  DataSet();  
  57.         ad.Fill(ds);  
  58.         ad.Dispose();  
  59.         if  (sc.Connection.State != ConnectionState.Closed)  
  60.             sc.Connection.Close();  
  61.         sc.Dispose();  
  62.         return  ds.Tables[0];  
  63.     }  
  64. }  

源码下载地址:自己写的repeater 分页控件(附源码下载)

分享到:
评论

相关推荐

    Repeater 分页控件

    写得不好大家可以尽管拍砖,源码在本文后面。其实这个分页控件非常简单,分页控件只是根据记录数和当前页数等设置而输出一个分页导航条而已,并没有参与真正的分页,具体如何从数据库读取分页数据,还需自己编写存储...

    ASP.NET分页控件示例源码

    总的来说,这个源码示例展示了如何利用AspNetPager.dll控件在ASP.NET环境中实现高效的数据分页,同时适用于GridView和Repeater控件,这对于处理大数据集的Web应用来说是一个重要的优化策略。通过研究这个源码,...

    功能非常好自主研发的自定义Repeater分页控件

    功能非常好自主研发的自定义Repeater分页控件,包括目前较为流行的20多种分页样式,也可定义无刷新分页,支持简洁分页,调用存储过程分页,速度很好,是您页面上的最佳选择,本人还有许多其它的一些控件,如有需要可...

    分页控件及源码(c#)

    在ASP.NET中,常见的分页控件有GridView、DataList和Repeater等,它们都提供了内置的分页功能。 2. C#中的分页实现: 在C#中,分页通常与SQL Server数据库配合使用,通过LIMIT或TOP关键字来限制返回的数据量。在...

    repeater 分页 的自定义控件

    对于`Repeater`控件,由于其本身不支持内置的分页功能,我们需要自己实现这一功能。 ### 自定义分页实现 1. **数据获取与绑定**:首先,我们需要在后端获取数据,通常使用`SqlDataSource`、`EntityDataSource`或...

    Reapter手写分页控件源码

    Reapter手写分页控件源码 源码描述: 实现repeater控件分页,方便好用,界面设计也很漂亮。数据库是Access,可直接运行。入口是RepeaterTest.aspx 自己手写的分页,控件绑定展示,其他功能没有做。下载的用户可以...

    能用漂亮分页控件及Demo源码

    AspNetPager分页控件的所有导航元素都可以由用户进行单独控制,从6.0版起,AspNetPager支持使用主题(Theme)与皮肤(Skin)统一控件的整体样式,配合asp.net 2.0中的DataSource控件,AspNetPager只需要编写短短几行...

    Repeater分页控件

    本文将深入探讨Repeater分页控件的使用,包括其工作原理、优点、配置方法以及实现分页功能的具体步骤。 Repeater控件本身并不支持内置的分页功能,因此在实际开发中,我们需要结合其他技术或控件来实现分页。通常,...

    Repeater 分页

    然而,`Repeater`本身并不内置分页功能,因此需要我们自己实现。 二、Repeater分页实现原理 在`Repeater`中实现分页,主要分为以下几个步骤: 1. **数据获取与处理**:首先,我们需要从数据库或其他数据源获取...

    ASP.NET Repeater分页,查询分页

    ASP.NET Repeater分页,查询分页 ASP.NET Repeater分页,查询分页 ASP.NET Repeater分页,查询分页 ASP.NET Repeater分页,查询分页 ASP.NET Repeater分页,查询分页

    VS2008Web版的数据分页控件源码及其使用方法

    在这个特定的场景中,我们关注的是“VS2008 Web版的数据分页控件源码及其使用方法”。这个控件主要用于处理大量数据时,提高网页的加载速度和用户体验,通过分批次加载数据,避免一次性加载所有记录导致的页面性能...

    repeater控件分页 C#.Net实例代码

    对于Repeater控件,分页通常通过在数据源查询中添加分页条件,然后在每一页加载适量的数据项到控件中来实现。 5. **Web.config文件**: Web.config是ASP.NET应用程序的配置文件,用于存储应用程序级别的配置信息,...

    PageTool分页控件v3.5源码201293

    PageTool分页控件是网页开发中的一...51aspx提供的"51aspx_PageTool35ece756b1-6efc-49bc-94df-ebae548bebd8"文件很可能是该分页控件的源代码压缩包,下载并研究这个文件,你将能深入理解PageTool分页控件的实现细节。

    VS2022 + SQL2019-SQL分页控件源码

    SQL分页控件源码 源码描述: 一个自制的分页控件 可以针对GridView, DataList, Repeater, DataGridView等 The DataPager is a custom control that attaches to a data control (such as a GridView, ListView, ...

    一个Web分页控件功能源码

    学习到的一个分页源码,共享给大家: Repeater分页 DataList分页 Url分页 使用Url重写技术 Url逆向分页 N层结构应用 使用XML文件数据源 图片浏览示例 使用AccessDataSource 使用SqlDataSource 使用ObjectDataSource ...

    实现repeater控件分页

    ### 实现Repeater控件分页 在.NET框架下,使用C#语言进行Web开发时,经常需要处理数据分页的问题。特别是在展示大量数据时,为了提高用户体验和服务器性能,通常会采用分页技术来逐页展示数据。本文将详细介绍如何...

    Repeater控件实现分页代码

    在本示例中,Repeater控件被用来实现分页功能,使得大量数据可以按页显示,提高用户体验。下面将详细解释如何使用Repeater控件来实现分页。 首先,我们需要在Web.config文件中配置数据库连接字符串。在给出的代码...

    SQL分页控件源码20130206

    该"SQL分页控件源码20130206"提供了一个自定义的解决方案,可以应用于多种数据展示组件,如ASP.NET中的GridView、DataList、Repeater,以及Windows Forms中的DataGridView。这些控件通常用于显示从数据库中检索的...

    repeater分页代码(直接可用)

    `Repeater`不像`GridView`或`DataList`那样内置了分页功能,所以需要我们自己编写代码来实现。在给定的示例中,主要涉及到以下几个关键元素: 1. **控件布局**:页面上有两个`Label`控件分别显示当前页和总页数,...

    asp.net分页控件及源码

    首先,我们要了解ASP.NET中的分页控件,如GridView、DataList或Repeater,它们都支持内置的分页功能。以GridView为例,我们可以通过设置其`AllowPaging`属性为`true`来启用分页功能。接着,可以设置`PageSize`属性来...

Global site tag (gtag.js) - Google Analytics