MVC+EF分页查询

1)什么是分页查询

分页查询,是一种操作系统bai里存du储器管理的一种技术,可以使电脑zhi的主存可以使用存储在辅助存储器中的dao数据。操作系统会将辅助存储器(通常是磁盘)中的数据分区成固定大小的区块,称为“页”(pages)。当不需要时,将分页由主存(通常是内存)移到辅助存储器;当需要时,再将数据取回,加载主存中。相对于分段,分页允许存储器存储于不连续的区块以维持文件系统的整齐。分页是磁盘和内存间传输数据块的最小单位。

2)分页实例

首先新建一个数据库(RbacDB),并建一个表(Roles),如图所示:
在这里插入图片描述
在MVC中添加实体EF框架

RbacDBEntities db = new RbacDBEntities();

视图分页左边代码,如下所示

<ul class="pagination">
        <li class="page-item"><label>@ViewBag.pageIndexs</label>页,第<input style="width:50px;" type="text" value="@ViewBag.pageIndex" id="pageIndex" />页,每天显示
            <select id="pageSize" onchange="go(1);">
                @{
                    var pageindexs = new List<int> { 5, 10, 20, 50, 100 };
                }
                @foreach (var item in pageindexs)
                {
                    if (ViewBag.pageSize == item)
                    {

                        <option value="@item" selected="selected">@item</option>
                    }
                    else
                    {

                        <option value="@item">@item</option>
                    }
                }

            </select></li>
    </ul>

视图分页右边代码,如下所示

<ul class="pagination">
        <li class="page-item">
            <a class="page-link" href="/role/index?pageIndex=1">首页</a>
        </li>

        <li class="page-item">
            @if (@ViewBag.pageIndex > 0)
            {
                <a class="page-link" href="/role/index?pageIndex=@(ViewBag.pageIndex-1)&pageSize=@ViewBag.pageSize&name=@ViewBag.name">上页</a>
            }
        </li>

        <li class="page-item">
            <a class="page-link" href="/role/index?pageIndex=@(ViewBag.pageIndex+1)&pageSize=@ViewBag.pageSize&name=@ViewBag.name">下页</a>
        </li>

        <li class="page-item">
            <a class="page-link" href="/role/index?pageIndex=@ViewBag.pageIndexs">末页</a>
        </li>

        <li class="page-item">
            <input type="button" class="btn btn-danger" value="跳转" onclick="go(1);" />
        </li>
    </ul>

视图js代码,如下所示

@section scripts{
    <script type="text/javascript">
        function go(pageindex) {
            var pageindex = $("#pageIndex").val();
            var pageSize = $("#pageSize").val();
            var txtCondName = $("#txtCondName").val();
            window.location.href = "/role/index?pageindex=" + pageindex + "&pageSize=" + pageSize + "&name=" + txtCondName
        }
    </script>
}

控制器代码,如下所示

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Com.Zhou.EF.Models;

namespace Com.Zhou.EF.Controllers
{
    public class RoleController : Controller
    {
        RbacDBEntities db = new RbacDBEntities();
        // GET: Role
        public ActionResult Index(int pageIndex=1,int pageSize=5,string Name="")
        {
            //求总记录数
            var pageCount = db.Roles.Where(p=> (p.Name == "" || p.Name.Contains(Name))).Count();
            //求总页数
            var pageIndexs = Math.Ceiling((pageCount*1.0/pageSize));

            ViewBag.pageIndexs = pageIndexs;    //总页数
            ViewBag.pageIndex = pageIndex;      //当前页数
            ViewBag.pageSize = pageSize;        //页码
            ViewBag.name = Name;                //名称
            ViewBag.pageCount = pageCount;      //总记录数
            //分页
            var roles = db.Roles
                .Where(p=>(p.Name==""||p.Name.Contains(Name)))
                .OrderBy(p => p.ID)
                .Skip(pageSize * (pageIndex - 1))
                .Take(pageSize)
                .ToList();

            return View(roles);
        }
    }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值