首页 > 代码库 > C# 分页方法

C# 分页方法

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;

namespace System.Web.Mvc //注意修改为与HtmlHelper相同的命名空间
{
/// <summary>
/// 静态 分页方法
/// </summary>
public static class MyHtmlHelper
{

	
//HtmlHelper的扩展: //注意点:扩展方法必须是静态方法,所在的类必须是静态类,所在的命名空间改成System.Web.MVC则能省略页面中必须添加命名空间的约束。 //主要就是输出分页的超级链接的标签 //自定义分页Helper扩展 public static HtmlString ShowPageNavigate(this HtmlHelper htmlHelper, int currentPage, int pageSize, int totalCount) { 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(); if (totalPages > 1) { //if (currentPage != 1) {//处理首页连接 output.AppendFormat("<a class=‘pageLink‘ href=http://www.mamicode.com/‘{0}?pageIndex=1&pageSize={1}‘>首页", redirectTo, pageSize); } if (currentPage > 1) {//处理上一页的连接 output.AppendFormat("<a class=‘pageLink‘ href=http://www.mamicode.com/‘{0}?pageIndex={1}&pageSize={2}‘>上一页", redirectTo, currentPage - 1, pageSize); } else { // output.Append("<span class=‘pageLink‘>上一页</span>"); } output.Append(" "); int currint = 5; for (int i = 0; i <= 10; i++) {//一共最多显示10个页码,前面5个,后面5个 if ((currentPage + i - currint) >= 1 && (currentPage + i - currint) <= totalPages) { if (currint == i) {//当前页处理 //output.Append(string.Format("[{0}]", currentPage)); output.AppendFormat("<a class=‘cpb‘ href=http://www.mamicode.com/‘{0}?pageIndex={1}&pageSize={2}‘>{3}", redirectTo, currentPage , pageSize, currentPage ); } else {//一般页处理 output.AppendFormat("<a class=‘pageLink‘ href=http://www.mamicode.com/‘{0}?pageIndex={1}&pageSize={2}‘>{3}", redirectTo, currentPage + i - currint, pageSize, currentPage + i - currint); } } output.Append(" "); } if (currentPage < totalPages) {//处理下一页的链接 output.AppendFormat("<a class=‘pageLink‘ href=http://www.mamicode.com/‘{0}?pageIndex={1}&pageSize={2}‘>下一页", redirectTo, currentPage + 1, pageSize); } else { //output.Append("<span class=‘pageLink‘>下一页</span>"); } output.Append(" "); if (currentPage != totalPages) { output.AppendFormat("<a class=‘pageLink‘ href=http://www.mamicode.com/‘{0}?pageIndex={1}&pageSize={2}‘>末页", redirectTo, totalPages, pageSize); } output.Append(" "); } output.AppendFormat("第{0}页 / 共{1}页", currentPage, totalPages);//这个统计加不加都行 return new HtmlString(output.ToString()); }
}

}

  

EF中Link分页查询

   
         // GET: Users
        /// <summary>
        /// 列表页
        /// </summary>
        /// <param name="pageIndex">起始页</param>
        /// <param name="pageSize">一页大小</param>
        /// <returns></returns>
        public ActionResult Index(int pageIndex=1,int pageSize=5)
        {
            //  ViewData.Model = dbContext.Users.AsEnumerable();
            // int pagSize=int.Parse(Request["pageSize"]??"2"); 

            // EF中使用Link分页查询语句
            ViewData["pageIndex"] = pageIndex;
            ViewData["pageSize"] = pageSize;
            ViewData["total"] = dbContext.Users.Count(); //获取总行数
            ViewData.Model = dbContext.Users
                            .OrderBy(u => u.Id) //根据id排序
                            .Skip(pageSize * (pageIndex - 1)) //跳过多少行
                            .Take(pageSize)  //取多少行
                            .AsEnumerable(); //延迟加载,当真正使用(数据)时才执行sql语句。


            return View();
        }

  

html 页面部分

@model IEnumerable<FindGirl_UI.Models.Users>

@{
    Layout = null;
}

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Index</title>
    <style type="text/css">
        /*分页样式:*/
		body
        {
        }

        .paginator
        {
            font: 12px Arial, Helvetica, sans-serif;
            padding: 10px 20px 10px 0;
            margin: 0px;
        }

        .paginator a
        {
            border: solid 1px #ccc;
            color: #0063dc;
            cursor: pointer;
            text-decoration: none;
        }

        .paginator a:visited
        {
            padding: 1px 6px;
            border: solid 1px #ddd;
            background: #fff;
            text-decoration: none;
        }

        .paginator .cpb
        {
            border: 1px solid #F50;
            font-weight: 700;
            color: #F50;
            background-color: #ffeee5;
        }

        .paginator a:hover
        {
            border: solid 1px #F50;
            color: #f60;
            text-decoration: none;
        }

        .paginator a, .paginator a:visited, .paginator .cpb, .paginator a:hover
        {
            float: left;
            height: 16px;
            line-height: 16px;
            min-width: 10px;
            _width: 10px;
            margin-right: 5px;
            text-align: center;
            white-space: nowrap;
            font-size: 12px;
            font-family: Arial,SimSun;
            padding: 0 3px;
        }
    </style>
</head>
<body>
    <p>
        @Html.ActionLink("Create New", "Create")
    </p>
    <table class="table">
        <tr>
            <th>
                @Html.DisplayNameFor(model => model.Id)
            </th>
            <th>
                @Html.DisplayNameFor(model => model.Name)
            </th>
            <th>
                @Html.DisplayNameFor(model => model.Sex)
            </th>
            <th>
                @Html.DisplayNameFor(model => model.Age)
            </th>
            <th>
                @Html.DisplayNameFor(model => model.City)
            </th>
            <th>
                @Html.DisplayNameFor(model => model.Character)
            </th>
            <th></th>
        </tr>
    
    @foreach (var item in Model) {
        <tr>
            <td>
                @Html.DisplayFor(modelItem => item.Id)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.Name)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.Sex)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.Age)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.City)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.Character)
            </td>
            <td>
                @Html.ActionLink("Edit", "Edit", new { id=item.Id }) |
                @Html.ActionLink("Details", "Details", new { id=item.Id }) |
                @Html.ActionLink("Delete", "Delete", new { id=item.Id })
            </td>
        </tr>
    }
    
    </table>

 @*分页部分*@ <div id="pageNav"> @Html.ShowPageNavigate((int)ViewData["pageIndex"],(int)ViewData["pageSize"],(int)ViewData["total"]) </div> </body> </html>

  

C# 分页方法