MVC簡單分頁(未實現無刷新分頁)

 

分頁Html輔助方法html

using System.Text;
using System.Web;
using System.Web.Mvc;

namespace System.Web.Mvc
{
   public static class HtmlExtensions
  {
   #region 分頁Html輔助方法
        /// <summary>
        /// 分頁Html輔助方法
        /// </summary>
        /// <param name="htmlHelper"></param>
        /// <param name="currentPage"></param>
        /// <param name="pageSize"></param>
        /// <param name="totalCount"></param>
        /// <param name="parameterString"></param>
        /// <returns></returns>
        public static HtmlString PageNavigate(this HtmlHelper htmlHelper, int currentPage, int pageSize, int totalCount, string parameterString)
        {
            var redirectTo = htmlHelper.ViewContext.RequestContext.HttpContext.Request.Url.AbsolutePath;
            pageSize = pageSize == 0 ? 3 : pageSize;
            var totalPages = Math.Max((totalCount + pageSize - 1) / pageSize, 1);//總頁數
            var output = new StringBuilder();
            output.Append("<nav>");
            output.Append("<ul class='pagination'>");
            string pageSizrWithParameter = string.Empty;
            if (!string.IsNullOrEmpty(parameterString))
                pageSizrWithParameter = pageSize + "&" + parameterString;
            if (totalPages>1)
            {
                output.AppendFormat("<li><a href='{0}?pageIndex=1&pageSize={1}' aria-label='Previous'><span aria-hidden='true'>&laquo;</span></a></li>",redirectTo,pageSizrWithParameter);
                if (currentPage > 1)//處理上一頁鏈接
                    output.AppendFormat("<li><a href='{0}?pageIndex={1}&pageSize={2}'>上一頁</a></li>",redirectTo,currentPage-1,pageSizrWithParameter);

                output.Append("");
                int currint = 5;
                for (int i = 0; i < 10; i++)
                {//一共最多顯示10個頁碼,前面五個後面五個
                    if ((currentPage+i-currint)>=1 && (currentPage+1-currint)<=totalPages)
                    {
                        if (currint == i)//當前頁處理
                            output.AppendFormat("<li class='active'><a href='{0}?pageIndex={1}&pageSize={2}'>{3}</a></li>", redirectTo, currentPage, pageSizrWithParameter, currentPage);
                        else//通常頁處理
                            output.AppendFormat("<li><a href='{0}?pageIndex={1}&pageSize={2}'>{3}</a></li>",redirectTo,currentPage+i-currint,pageSizrWithParameter,currentPage+i-currint);
                    }
                    output.Append("");
                }
                if (currentPage < totalPages)//處理下一頁鏈接
                    output.AppendFormat("<li><a href='{0}?pageIndex={1}&pageSize={2}'>下一頁</a></li>", redirectTo, currentPage + 1, pageSizrWithParameter);
                output.Append("");

                if (currentPage != totalPages)
                    output.AppendFormat("<li><a href='{0}?pageIndex={1}&pageSize={2}'><span aria-hidden='true'>&raquo;</span></a></li>", redirectTo, totalPages, pageSizrWithParameter);
                output.Append("");
            }
            output.Append("</ul>");
            output.Append("</nav>");

            return new HtmlString(output.ToString());
        }
        #endregion
  }
}

頁面相關位置調用ui

<!--在控制器裏面存儲的ViewData,totalRecord表示根據添加查詢到的數據並返回的條數,parameter表示搜索條件(關鍵字搜索等等)-->
@Html.PageNavigate(int.Parse(ViewData["pageIndex"].ToString()),int.Parse(ViewData["pageSize"].ToString()),int.Parse(ViewData["totalRecord"].ToString()),ViewData["parameter"].ToString())

 

控制器相關方法實現this

例:
public Action Moment(int pageIndex=1,int pageSize=20)
{
int totalRecord =0;
List<Aniuge_Moments> lam =MomentsBussiness.GetInstance().GetMoment(pageSize,pageIndex,out totalRecord);//獲取分頁顯示的列表
ViewData["totalRecord"]=totalRecord;
ViewData["pageIndex"]=pageIndex;
ViewData["pageSize"]=pageSize;
#region 生成搜索狀態保持數據
StringBuilder sb =new StringBuilder ();
foreach(string item in Request.QueryString.Allkeys)
{
if(!item.Equals("pageIndex")&&!item.Equls("pageSize"))
sb.Append(item + "=" +Request.QueryString[item]+"&");
}
ViewData["parameter"]=sb.Tostring().Trim("&");
#endregion
return View(lam);
}

 

要無刷新分頁及更多功能  看「輕量級表格插件Bootstrap Table。擁有強大的支持固定表頭、單/複選、排序、分頁、搜索及自定義表頭等功能。」這便隨筆spa

相關文章
相關標籤/搜索