简单的分页类

public class paging
    {
        #region "分页实体类"
        private int _page;

        public int Page
        {
            get { return _page; }
            set { _page = value; }
        }

        private string _name;

        public string Name
        {
            get { return _name; }
            set { _name = value; }
        }
        private string _css;

        public string Css
        {
            get { return _css; }
            set { _css = value; }
        }
        #endregion
    }


    public class Paging
    {
       
        #region "分页实现方法"
        /// <summary>
        /// 分页
        /// </summary>
        /// <param name="page_count">总页数</param>
        /// <param name="page_now">当前页</param>
        /// <returns></returns>
        public static List<paging> get(int page_count, int page_now)
        {
            List<paging> list = new List<paging>();
            int page_star;
            if (page_count <= 9) { page_star = 1; }
            else
            {
                if (page_now > 5) { page_star = page_now - 4; } else { page_star = 1; }
                if (page_count - page_now < 5) { page_star = page_count - 8; }
            }
            //可以加IF判断总页数如果是1 可以不执行下面代码,当页码只有一页时候没有分页
            if (page_count > 0)
            {
                paging item = null;
                item = new paging();
                item.Page = 1;
                item.Name = "首页";//定义首页文字
                list.Add(item);
                item = new paging();
                item.Page = page_now > 1 ? page_now - 1 : 1;
                item.Name = "上一页";//定义上一页文字
                list.Add(item);

                if (page_now > 5)
                {
                    item = new paging();
                    item.Name = "...";
                    item.Page = page_now - 5;
                    list.Add(item);
                }
                for (int i = page_star; i < page_star + 9 && i <= page_count; i++)
                {
                    item = new paging();
                    item.Page = i;
                    item.Name = i + "";
                    if (i == page_now)
                        item.Css = "thisclass";//当前页class样式
                    list.Add(item);
                }
                if (page_count > 9 && page_count - page_now > 4)
                {
                    item = new paging();
                    item.Name = "...";
                    item.Page = page_star + 9;
                    list.Add(item);
                }

                item = new paging();
                item.Page = page_now == page_count ? page_count : page_now + 1;
                item.Name = "下一页";//定义下一页
                list.Add(item);

                item = new paging();
                item.Page = page_count;
                item.Name = "末页";//定义尾页文字
                list.Add(item);
            }
            return list;


        }
        #endregion
    }


页面后台:
  绑定分页Repeater              
         int count = obj.NEW_CONTENT_COUNT(sort); int pagecount = 10;//每页的条数 int page = count / pagecount; page = count % pagecount != 0 ? page + 1 : page; int PNOW = Convert.ToInt32(hidpage.Value); if (PNOW > page) PNOW = page; rep_page.DataSource = Paging.get(page, PNOW); rep_page.DataBind(); 分页LinkButton的Command
        protected void lk_page_Command(object sender, CommandEventArgs e)
        {
            hidpage.Value = e.CommandName;
            loding();
        }


页面前台:
<asp:Repeater ID="rep_page" runat="server">
    <ItemTemplate>
         <li class='<%#Eval("Css") %>'>
              <asp:LinkButton ID="lk_page" CommandName='<%#Eval("Page") %>' runat="server" OnCommand="lk_page_Command"><%#Eval("name") %></asp:LinkButton>
         </li>
    </ItemTemplate>
</asp:Repeater>

<asp:HiddenField ID="hidpage" Value="1" runat="server" />


这样写地址栏美观,但是不利于SEO.效率不知道和别的分页方法那个好. 请多指教.

  


 

posted @ 2013-03-09 16:57  刘振宇  阅读(140)  评论(0)    收藏  举报