Repeater分页控件

 每次用Repeater控件,总会牵扯到分页问题,索性自己重写一个Repeater控件,将分页功能集成进去,以后就不会这么麻烦了。废话少说贴上Code:

          新建一个ASP.NET 服务器控件项目,添加一个Repeater类,继承System.Web.UI.WebControls.Repeater,然后开始在这个Repeater类里面写代码。

          1、首先设置一下DefaultProperty的值

          DefaultProperty:[DefaultProperty("Text"), ToolboxData("<!--Repeater Begin --><{0}:Repeater ID=\"rpList\" runat=server EnableViewState=\"false\" ><HeaderTemplate></HeaderTemplate><ItemTemplate></ItemTemplate><FooterTemplate></FooterTemplate></{0}:Repeater><!--Repeater End -->")],这里就写Repeater 最长用的几个东西,大家可以根据自己需要进行扩展。

2、添加几个分页要用的属性

private int _recordcount = 0;
        private int _pagesize = 0;
        private string _pagelink = "";
        private int _currentpage = 1;
[Bindable(true), Category("Data"), DefaultValue("1"), Description("记录总数")]
        public int RecordCount
        {
            get
            {
                return _recordcount;
            }

            set
            {
                _recordcount = value;
            }
        }

        [Bindable(true), Category("Data"), DefaultValue("1"), Description("每页显示记录数")]
        public int PageSize
        {
            get
            {
                return _pagesize;
            }

            set
            {
                _pagesize = value;
            }
        }

        [Bindable(true), Category("Data"), DefaultValue(""), Description("当前页链接")]
        public string PageLink
        {
            get
            {
                return _pagelink;
            }

            set
            {
                _pagelink = value;
            }
        }

        [Bindable(true), Category("Data"), DefaultValue("1"), Description("当前页")]
        public int CurrentPage
        {
            get
            {
                return _currentpage;
            }

            set
            {
                _currentpage = value;
            }
        }

 3、添加输出到HTML的方法

 7、后台代码

 

 void BindPage() 
        {
            this.rpList.PageSize = 10;
            this.rpList.RecordCount = IPInfo_BLL.getDatabyCount();
            this.rpList.PageLink = ConfigurationManager.AppSettings["PageUrl1"].ToString();
            this.rpList.CurrentPage = Request.QueryString["page"] == null ? 1 : int.Parse(Request.QueryString["page"]);
            int SIndex = (this.rpList.CurrentPage-1) * 10 + 1;
            this.rpList.DataSource = IPInfo_BLL.getDatabyIndex(SIndex, this.rpList.PageSize);
            this.rpList.DataBind();
        }
       //分页
        public static IQueryable getDatabyIndex(int startIndex,int PageSize)
        {
            var query = from p in datacontext.IPInfo
                        select new
                        {
                            p.IPid,
                            p.IPFrom,
                            p.IPTo,
                            p.IPLocation,
                            p.IPCity,
                            p.IPToNumber,
                            p.IPFromNumber
                        };

            return query.Skip(startIndex).Take(PageSize);

        }

    8、看看最后效果

            当然了,最后样式不满意,可以自己修改吗,我这里只是简单的写下,以后根据需要扩展。

 4、在项目中添加这个控件的引用

             /Files/yangtongnet/SRepeater.rar

             5、在页面中添加命名空间

             <%@ Register Assembly="ServerControl" Namespace="ServerControl" TagPrefix="SControl" %>

             6、控件的客户端代码

Repeater分页控件:
    <!--Repeater Begin -->
    <SControl:Repeater ID="rpList" runat="server" EnableViewState="false">
        <HeaderTemplate>
        <table class="tby">
        <tr>
             <th>ID</th>
             <th>IPFrom</th>
             <th>IPTo</th>
             <th>IPLocation</th>
             <th>City</th>
             <th>IPToNumber</th>
             <th>IPFromNumber</th>
          </tr>
        </HeaderTemplate>
        <ItemTemplate>
        <tr>
         <td><%#Eval("IPid")%></td>
         <td><%#Eval("IPFrom")%></td> 
         <td><%#Eval("IPTo")%></td> 
         <td><%#Eval("IPLocation")%></td>
         <td><%#Eval("IPCity") %></td>  
         <td><%#Eval("IPToNumber")%></td>  
         <td><%#Eval("IPFromNumber")%></td>
         </tr>
        </ItemTemplate>
        <FooterTemplate>
        </table>
        </FooterTemplate>
    </SControl:Repeater>
    <!--Repeater End -->

原文地址:https://www.cnblogs.com/Leo_wl/p/1759908.html