asp.net MVC分頁代碼分享
更新時間:2016年09月18日 11:34:20 作者:小鋒神
這篇文章主要為大家詳細介紹了asp.net MVC分頁代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
本文實例為大家分享了MVC分頁代碼,供大家參考,具體內容如下
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Linq;
using System.Web;
using System.Text;
using System.Web.Mvc;
using System.Web.Routing;
using System.Data.Objects.DataClasses;
namespace System.Web.Mvc
{
public static class PagerHelper
{
/// <summary>
/// 分頁
/// </summary>
/// <param name="helper"></param>
/// <param name="id">分頁id</param>
/// <param name="currentPageIndex">當前頁</param>
/// <param name="pageSize">分頁尺寸</param>
/// <param name="recordCount">記錄總數(shù)</param>
/// <param name="htmlAttributes">分頁頭標簽屬性</param>
/// <param name="className">分頁樣式</param>
/// <param name="mode">分頁模式</param>
/// <returns></returns>
public static string Pager(this HtmlHelper helper, string id, int currentPageIndex, int pageSize, int recordCount, object htmlAttributes, string className, PageMode mode)
{
TagBuilder builder = new TagBuilder("table");
builder.IdAttributeDotReplacement = "_";
builder.GenerateId(id);
builder.AddCssClass(className);
builder.MergeAttributes(new RouteValueDictionary(htmlAttributes));
builder.InnerHtml = GetNormalPage(currentPageIndex, pageSize, recordCount, mode);
return builder.ToString();
}
/// <summary>
/// 分頁
/// </summary>
/// <param name="helper"></param>
/// <param name="id">分頁id</param>
/// <param name="currentPageIndex">當前頁</param>
/// <param name="pageSize">分頁尺寸</param>
/// <param name="recordCount">記錄總數(shù)</param>
/// <param name="className">分頁樣式</param>
/// <returns></returns>
public static string Pager(this HtmlHelper helper, string id, int currentPageIndex, int pageSize, int recordCount, string className)
{
return Pager(helper, id, currentPageIndex, pageSize, recordCount, null, className, PageMode.Normal);
}
/// <summary>
/// 分頁
/// </summary>
/// <param name="helper"></param>
/// <param name="id">分頁id</param>
/// <param name="currentPageIndex">當前頁</param>
/// <param name="pageSize">分頁尺寸</param>
/// <param name="recordCount">記錄總數(shù)</param>
/// <returns></returns>
public static string Pager(this HtmlHelper helper, string id, int currentPageIndex, int pageSize, int recordCount)
{
return Pager(helper, id, currentPageIndex, pageSize, recordCount, null);
}
/// <summary>
/// 分頁
/// </summary>
/// <param name="helper"></param>
/// <param name="id">分頁id</param>
/// <param name="currentPageIndex">當前頁</param>
/// <param name="pageSize">分頁尺寸</param>
/// <param name="recordCount">記錄總數(shù)</param>
/// <param name="mode">分頁模式</param>
/// <returns></returns>
public static string Pager(this HtmlHelper helper, string id, int currentPageIndex, int pageSize, int recordCount, PageMode mode)
{
return Pager(helper, id, currentPageIndex, pageSize, recordCount, null, mode);
}
/// <summary>
/// 分頁
/// </summary>
/// <param name="helper"></param>
/// <param name="id">分頁id</param>
/// <param name="currentPageIndex">當前頁</param>
/// <param name="pageSize">分頁尺寸</param>
/// <param name="recordCount">記錄總數(shù)</param>
/// <param name="className">分頁樣式</param>
/// <param name="mode">分頁模式</param>
/// <returns></returns>
public static string Pager(this HtmlHelper helper, string id, int currentPageIndex, int pageSize, int recordCount, string className, PageMode mode)
{
return Pager(helper, id, currentPageIndex, pageSize, recordCount, null, className, mode);
}
/// <summary>
/// 獲取普通分頁
/// </summary>
/// <param name="currentPageIndex"></param>
/// <param name="pageSize"></param>
/// <param name="recordCount"></param>
/// <returns></returns>
private static string GetNormalPage(int currentPageIndex, int pageSize, int recordCount, PageMode mode)
{
int pageCount = (recordCount % pageSize == 0 ? recordCount / pageSize : recordCount / pageSize + 1);
StringBuilder url = new StringBuilder();
url.Append(HttpContext.Current.Request.Url.AbsolutePath + "?page={0}");
NameValueCollection collection = HttpContext.Current.Request.QueryString;
string[] keys = collection.AllKeys;
for (int i = 0; i < keys.Length; i++)
{
if (keys[i].ToLower() != "page")
url.AppendFormat("&{0}={1}", keys[i], collection[keys[i]]);
}
StringBuilder sb = new StringBuilder();
sb.Append("<tr><td>");
sb.AppendFormat("總共{0}條記錄,共{1}頁,當前第{2}頁 ", recordCount, pageCount, currentPageIndex);
if (currentPageIndex == 1)
sb.Append("<span>首頁</span> ");
else
{
string url1 = string.Format(url.ToString(), 1);
sb.AppendFormat("<span><a href={0}>首頁</a></span> ", url1);
}
if (currentPageIndex > 1)
{
string url1 = string.Format(url.ToString(), currentPageIndex - 1);
sb.AppendFormat("<span><a href={0}>上一頁</a></span> ", url1);
}
else
sb.Append("<span>上一頁</span> ");
if (mode == PageMode.Numeric)
sb.Append(GetNumericPage(currentPageIndex, pageSize, recordCount, pageCount, url.ToString()));
if (currentPageIndex < pageCount)
{
string url1 = string.Format(url.ToString(), currentPageIndex + 1);
sb.AppendFormat("<span><a href={0}>下一頁</a></span> ", url1);
}
else
sb.Append("<span>下一頁</span> ");
if (currentPageIndex == pageCount)
sb.Append("<span>末頁</span> ");
else
{
string url1 = string.Format(url.ToString(), pageCount);
sb.AppendFormat("<span><a href={0}>末頁</a></span> ", url1);
}
return sb.ToString();
}
/// <summary>
/// 獲取數(shù)字分頁
/// </summary>
/// <param name="currentPageIndex"></param>
/// <param name="pageSize"></param>
/// <param name="recordCount"></param>
/// <param name="pageCount"></param>
/// <param name="url"></param>
/// <returns></returns>
private static string GetNumericPage(int currentPageIndex, int pageSize, int recordCount, int pageCount, string url)
{
int k = currentPageIndex / 10;
int m = currentPageIndex % 10;
StringBuilder sb = new StringBuilder();
if (currentPageIndex / 10 == pageCount / 10)
{
if (m == 0)
{
k--;
m = 10;
}
else
m = pageCount % 10;
}
else
m = 10;
for (int i = k * 10 + 1; i <= k * 10 + m; i++)
{
if (i == currentPageIndex)
sb.AppendFormat("<span><font color=red><b>{0}</b></font></span> ", i);
else
{
string url1 = string.Format(url.ToString(), i);
sb.AppendFormat("<span><a href={0}>{1}</a></span> ", url1, i);
}
}
return sb.ToString();
}
}
/// <summary>
/// 分頁模式
/// </summary>
public enum PageMode
{
/// <summary>
/// 普通分頁模式
/// </summary>
Normal,
/// <summary>
/// 普通分頁加數(shù)字分頁
/// </summary>
Numeric
}
}
html代碼
<div id="pageNav" class="pageinator"> @Html.ShowPageNavigate((int)ViewData["pageindex"], (int)ViewBag.pageSize, (int)ViewBag.totalCount); </div>
控制器
shopEntities shop = new shopEntities();
public ActionResult Index()
{
//IQueryable<tbl_order> order = (from a in shop.tbl_order select a).OrderBy(a=>a.id).Skip(10).Take(10);
//ViewData["order"] = order;
//return View();
int pageIndex = Request["pageIndex"] == null ? 1 : int.Parse(Request["pageIndex"]);
int pageSize = Request["pageSize"] == null ? 10 : int.Parse(Request["pageSize"]);
int totalCount = 0;
//給前臺傳遞 分頁的參數(shù)數(shù)據(jù)
ViewData["pageIndex"] = pageIndex;
//ViewData["pageSize"] = pageSize;
ViewBag.pageSize = pageSize;
//總條數(shù)
totalCount = shop.tbl_order.Count();
ViewBag.totalCount = totalCount;
//把當前頁面數(shù)據(jù)發(fā)送到前臺。
//ViewData.Model = db.UserInfo.ToList();
//List<tbl_order> pp = shop.tbl_order
// .OrderBy(u => u.id)
// .Skip((pageIndex - 1) * pageSize)
// .Take(pageSize).ToList();
IQueryable<tbl_order> pp = shop.tbl_order
.OrderBy(u => u.id)
.Skip((pageIndex - 1) * pageSize)
.Take(pageSize);
return View(pp);
}
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
.NET Core 基于Websocket的在線聊天室實現(xiàn)
這篇文章主要介紹了.NET Core 基于Websocket的在線聊天室實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-03-03
VS2015在升級到Update2之后運行Cordova項目異常的解決方案
這篇文章主要介紹了VS2015在升級到Update2之后運行Cordova項目異常的解決方案的相關資料,需要的朋友可以參考下2016-07-07
ASP.NET創(chuàng)建動態(tài)縮略圖的方法
這篇文章主要介紹了ASP.NET創(chuàng)建動態(tài)縮略圖的方法,實例分析了asp.net動態(tài)操作圖片的相關技巧,需要的朋友可以參考下2015-06-06
使用JavaScript代碼實現(xiàn)各種數(shù)據(jù)控件的反選功能 不要只做拖控件的菜鳥
在我們做許多項目的時候,會用到反選這個功能,但是我一般使用C#代碼創(chuàng)建數(shù)組遍歷實現(xiàn)功能,今天我想換一種語言實現(xiàn)一下,于是我就用JavaScript研究了一下怎么實現(xiàn)這個功能2011-12-12

