`
charrysong
  • 浏览: 48593 次
  • 性别: 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 分页控件

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

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

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

    Repeater分页控件

    Repeater分页控件 ,Repeater分页控件,内置Demo

    Reapter手写分页控件源码

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

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

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

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

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

    ASP.NET Repeater分页,查询分页

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

    Repeater 分页

    Repeater 分页 Repeater 分页 Repeater 分页

    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, ...

    实现repeater控件分页

    C#实现repeater控件分页,初学者必熟练的控件。好资料大家分享。

    一个Web分页控件功能源码

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

    SQL分页控件源码20130206

    SQL分页控件源码 源码描述: 一个自制的分页控件 可以针对GridView, DataList, Repeater, DataGridView等

    repeater 分页 的自定义控件

    repeater 通过在后台生成的linkbutton的点击事件进行分页

    Repeater控件实现分页代码

    Repeater控件实现分页代码,很简单,很漂亮。

    AspNetPager7.2 分页控件及Demo源码

    AspNetPager7.2 分页控件及Demo源码 AspNetPager针对ASP.NET分页控件的不足,提出了与众不同的解决asp.net中分页问题的方案,即将分页导航功能与数据显示功能完全独立开来,由用户自己控制数据的获取及显示方式,...

    .NET 通用分页控件

    AspNetPager7.2分页控件及Demo源码 分页是Web应用程序中最常用到的功能之一,在ASP.NET中,虽然自带了一个可以分页的DataGrid(asp.net 1.1)和GridView(asp.net 2.0)控件,但其分页功能并不尽如人意,如可定制性...

    repeater分页代码(直接可用)

    repeater分页代码(直接可用)repeater分页代码(直接可用)

    AspNetPager7.0分页控件源码 内附使用文档

    如为GridView、DataList以及Repeater等数据绑定控件实现分页、呈现自定义的分页数据以及制作图片浏览程序等,因为AspNetPager控件和数据是独立的,因此要分页的数据可以来自任何数据源,如SQL Server、Oracle、...

    分页控件AspNetPager7.2c#源码

    AspNetPager7.2分页控件及Demo源码 分页是Web应用程序中最常用到的功能之一,在ASP.NET中,虽然自带了一个可以分页的DataGrid(asp.net 1.1)和GridView(asp.net 2.0)控件,但其分页功能并不尽如人意,如可定制性...

    Repeater控件分页例子

    以实例来解析Repeater控件分页的方法 希望对大家有所帮助。

Global site tag (gtag.js) - Google Analytics