分頁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'>«</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'>»</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