Html列表分頁算法


 

public class PageHelper
    {
        /// <summary>
        /// 標簽
        /// </summary>
        public string Tag { get; set; }
        /// <summary>
        /// 選中的標簽樣式
        /// </summary>
        public string TagCurr { get; set; }
        /// <summary>
        /// 分頁的路徑
        /// </summary>
        public string Url { get; set; }
        /// <summary>
        /// 當前頁
        /// </summary>
        public int PageIdnex { get; set; }
        /// <summary>
        /// 總頁數
        /// </summary>
        public int PageCount { get; set; }

        /// <summary>
        ///  實現分頁算法
        /// </summary>
        /// <returns></returns>
        public string CreatePage( )
        {

            //1.1當前頁大於總頁數
            if (PageIdnex > PageCount) return null;
            StringBuilder sb = new StringBuilder();
            //1.2當總頁數小於5條時,顯示全部的頁碼
            if (PageCount <= 5)
            {
                //拼接頁碼
                for (int i = 1; i <= PageCount; i++)
                {
                    if (PageIdnex == i)
                    {
                        //拼接當前頁
                        sb.Append($"<a  onclick=pager(\"{Url}\",{i}) class=\"{TagCurr}\">{i}</a>");
                    }
                    else
                    {
                        sb.Append($"<a onclick=pager(\"{Url}\",{i})>{i}</a>");
                    }
                }
                return sb.ToString();
            }
            else
            {
                //2.2 總頁數大於5,當前頁小於4時
                if (PageIdnex <= 4)
                {
                    //2.2.1 當前頁靠近尾頁
                    if (PageCount - PageIdnex <= 3)
                    {
                        //拼接第一頁
                        sb.Append($"<a onclick=pager(\"{Url}\",{1})>1</a><a>...</a>");
                        for (int i = PageIdnex - 1; i <= PageCount; i++)
                        {
                            if (PageIdnex == i)
                            {
                                //拼接當前頁
                                sb.Append($"<a onclick=pager(\"{Url}\",{i})  class=\"{TagCurr}\">{i}</a>");
                            }
                            else
                            {
                                sb.Append($"<a onclick=pager(\"{Url}\",{i})>{i}</a>");
                            }
                        }
                    }
                    else
                    {
                        //2.2.2當前頁靠近首頁
                        for (int i = 1; i <= PageIdnex + 2; i++)
                        {
                            if (PageIdnex == i)
                            {
                                sb.Append($"<a onclick=pager(\"{Url}\",{i}) class=\"{TagCurr}\">{i}</a>");
                            }
                            else
                            {
                                sb.Append($"<a onclick=pager(\"{Url}\",{i})>{i}</a>");
                            }
                        }
                        //拼接最后一頁
                        sb.Append($"<a>...</a><a onclick=pager(\"{Url}\",{PageCount})>{PageCount}</>");
                    }

                }
                else
                {
                    //2.3 總頁數大於5,當前頁大於4時
                    sb.Append($"<a onclick=pager(\"{Url}\",{1})>1</a><a>...</a>");
                    //2.3.1 當前頁大於4,當前頁離尾頁很近
                    if (PageCount - PageIdnex <= 2)
                    {
                        for (int i = PageIdnex - 2; i <= PageCount; i++)
                        {
                            if (PageIdnex == i)
                            {
                                sb.Append($"<a onclick=pager(\"{Url}\",{i}) class=\"{TagCurr}\">{i}</a>");
                            }
                            else
                            {
                                sb.Append($"<a onclick=pager(\"{Url}\",{i})>{i}</a>");
                            }
                        }
                    }
                    else
                    {
                        //2.3.2當前頁在中間
                        for (int i = PageIdnex - 2; i < PageIdnex + 2; i++)
                        {
                            if (PageIdnex == i)
                            {
                                sb.Append($"<a onclick=pager(\"{Url}\",{i}) class=\"{TagCurr}\">{i}</a>");
                            }
                            else
                            {
                                sb.Append($"<a onclick=pager(\"{Url}\",{i})>{i}</a>");
                            }
                        }
                        sb.Append($"<a>...</a><a onclick=pager(\"{Url}\",{PageCount})>{PageCount}</>");
                    }
                }

                return sb.ToString();
            }

 

 

控制器 var list = new List<string>();

for (int i = 1; i <= 100; i++)
            {
                list.Add("北京朝陽區" + i);
            }
            int pageSzie = 10;
            int pageCount = 0;
            if (list.Count % pageSzie == 0)
            {
                pageCount = list.Count / pageSzie;
            }
            else
            {
                pageCount = (list.Count / pageSzie) + 1;
            }
            PageHelper ph = new PageHelper
            {
                Tag = "a",
                TagCurr = "curr",
                Url = "/testpage/list/",
PageIndex=
pageIndex,
PageCount=pagecount
            };
            var strHtml = ph.CreatePage();
            var pageList = list.Skip((pageIndex - 1) * pageSzie).Take(pageSzie).ToList();
            ViewBag.StrHtml = strHtml;
            ViewBag.PageList = pageList;

JS

function fenye_ok() {
    pager("/TestPage/list", 1);

}

function pager(href, pageIndex) {
    var num = $("#num").val();
    $("#div-load").load("/TestPage/list", { "pageIndex": pageIndex, "num": num }, function () { });
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM