分页查询
分页查询是一种常见的用法
在许多的系统中都会需要用到
下面我就和大家分享一下我常用的分页查询的写法
数据库
数据库名: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);
}
效果图如下