MVC+EF的分页查询

分页查询

分页查询是一种常见的用法
在许多的系统中都会需要用到
下面我就和大家分享一下我常用的分页查询的写法

数据库

数据库名:RbacDB
表名:Roles
在这里插入图片描述

在MVC中添加EF实体

在这里插入图片描述

添加视图

引用bootstrap进行页面布局

分页布局-左边的每页显示条数

<ul class="pagination">
        <li>
            共 @ViewBag.rowCounts 页,第 <input type="text" value="1" id="pageIndex" /> 页,每页显示
            <select id="pageSize" onchange="page(1);">
                @{
                    var pageIndexs = new List<int> { 5, 10, 20, 50 };
                }
                @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><a href="javascript:page(1)">首页</a></li>
        @if (@ViewBag.pageIndex > 1)
        {
            <li><a href="javascript:page(@ViewBag.pageIndex-1)">上页</a></li>
        }
        else
        {
            <li class="disabled"><a href="javascript:page(@ViewBag.pageIndex-1)">上页</a></li>
        }
        @if (@ViewBag.pageIndex < ViewBag.rowCounts)
        {
            <li><a href="javascript:page(@ViewBag.pageIndex+1)">下页</a></li>
        }
        else
        {
            <li class="disabled"><a href="javascript:page(@ViewBag.pageIndex+1)">下页</a></li>
        }
        <li><a href="javascript:page(@ViewBag.rowCounts)">末页</a></li>
        <li><input type="button" class="btn btn-danger" value="GO" onclick="go();" /></li>
    </ul>

js脚本

<script>
        function page(pageIndex) {
            var pageSize = $("#pageSize").val();
            var name = $("#txtCondName").val();//txtCondName是搜索框的ID
            window.location.href = "/userinfo/index?pageIndex=" + pageIndex + "&pageSize=" + pageSize + "&name=" + name
        }
        function go() {
            var pageindex = $("#pageIndex").val();
            page(pageindex);
        }
</script>

MVC控制器代码

        public ActionResult Index(int roleID=0,string name="",int pageIndex=1,int pageSize=5)
        {
            var roles = db.Roles.ToList();
            ViewBag.roles = roles;
            //总记录数
            var pageCounts = db.UserInfos.Count();
            var rowCounts = Math.Ceiling(1.00*pageCounts/pageSize);//获取最小整数
            //根据页码每页的条数名称查询
            var userInfos = db.UserInfos.Where(p=>p.Name==""||(p.Name.Contains(name)))
                .OrderBy(p=>p.ID) //排序
                .Skip((pageIndex - 1) * pageSize)   //跳过
                .Take(pageSize)     //取指定数量条数的数据
                .ToList();  //转化集合
            ViewBag.pageIndex = pageIndex;//用ViewBag将pageIndex,pageSize,Name,pageCounts,rowCounts传回前台页面
            ViewBag.pageSize = pageSize;
            ViewBag.Name = name;
            ViewBag.pageCounts = pageCounts;
            ViewBag.rowCounts = rowCounts;
            return View(userInfos);
        }

效果图如下

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值