.NET MVC 分页控件
2016-04-26 19:17
218 查看
11年刚接触.NET MVC的时候写过一个分页控件。后来实际应用又完善了下。分页样式参考的ASP.NET的
mvcpager
下载资源:
http://download.csdn.net/detail/kingson88/3485783
http://download.csdn.net/detail/kingson88/3485388
http://download.csdn.net/detail/kingson88/3547016
代码如下
1、创建分页类:
PageMvc
@model FinanceJob.ViewModel.Shared.PageMvc
@if (Model.TotalPage > 0 && Model.CurrentPageIndex <= Model.TotalPage)
{
3、业务分页处理
视图VIEWMODEL
public class Seach:PageMvc
{
}
在业务视图里面追加
@Html.Partial(“~/Views/Shared/Page.cshtml”, Model)
mvcpager
下载资源:
http://download.csdn.net/detail/kingson88/3485783
http://download.csdn.net/detail/kingson88/3485388
http://download.csdn.net/detail/kingson88/3547016
代码如下
1、创建分页类:
PageMvc
[Serializable] public class PageMvc { private int _currentPageIndex = 1; /// <summary> /// 当前页 /// </summary> public int CurrentPageIndex { get { return _currentPageIndex > 0 ? _currentPageIndex : 1; } set { _currentPageIndex = value; } } /// <summary> /// 当前页 /// </summary> public int page { get { return _currentPageIndex > 0 ? _currentPageIndex : 1; } set { _currentPageIndex = value; } } /// <summary> /// 当前页码CSS /// </summary> public string CurrentPageCss { get; set; } int _dispPageCount = 10; /// <summary> /// 条目显示的页数 /// </summary> public int DispPageCount { get { return _dispPageCount; } set { _dispPageCount = value; } } int _pageSize = 20; /// <summary> /// 每页记录数 默认20条记录一页 /// </summary> public int PageSize { get { return _pageSize; } set { _pageSize = value; } } public int TotalCount { get; set; } /// <summary> /// 获取总页数 /// </summary> public int TotalPage { get { int pageCount = 0; if (PageSize > 0 && TotalCount > 0) { pageCount = TotalCount / PageSize; int count = TotalCount % PageSize; if (count > 0) { pageCount = pageCount + 1; } } return pageCount; } } public int PageFirst { get { int result = 1; //当前页大于要显示的页。起始页肯定不是第一页 if (CurrentPageIndex > _dispPageCount) { int num = (CurrentPageIndex % _dispPageCount); if (num > 0) { result = ((CurrentPageIndex / _dispPageCount) * _dispPageCount) + 1; } else { result = (((CurrentPageIndex / _dispPageCount) - 1) * _dispPageCount) + 1; } } return result; } } /// <summary> /// 默认开启Ajax分页 /// </summary> private bool _isAjax = false; /// <summary> /// 是否Ajax分页 /// </summary> public bool IsAjax { get { return _isAjax; } set { _isAjax = value; } } /// <summary> /// 当前页需要跳过的数据记录 /// </summary> public int SkinCount { get { return (CurrentPageIndex - 1) * PageSize; } } /// <summary> /// 下一页 /// </summary> public int NextPage { get { if((CurrentPageIndex+1)>TotalPage) { return TotalPage; } else { return CurrentPageIndex + 1; } } } public int PrePage { get { if ((CurrentPageIndex - 1) < 1) { return 1; } else { return CurrentPageIndex - 1; } } } } 2、创建分页视图 Shared\Mvc3Page.cshtml
@model FinanceJob.ViewModel.Shared.PageMvc
@if (Model.TotalPage > 0 && Model.CurrentPageIndex <= Model.TotalPage)
{
<div id="mvcpager
"> @if (Model.CurrentPageIndex > 1) { <a href="javascript:gotopage(1,@Model.TotalPage)" style="margin-right:10px;">首页</a> <a href="javascript:gotopage(@(Model.CurrentPageIndex - 1),@Model.TotalPage)" style="margin-right:10px;">前页</a> } else { <a disabled="disabled" style="margin-right:10px;">首页</a> <a disabled="disabled" style="margin-right:10px;">前页</a> } @if (Model.PageFirst > 1) { <a href="javascript:gotopage(@(Model.PageFirst - 1),@Model.TotalPage)" style="margin-right:10px;">. .</a> } <script type="text/javascript"> var totalPage = 0; function gotopage(pageIndex, lastPage) { totalPage = lastPage; if (checkInput(lastPage)) { document.getElementById('CurrentPageIndex').value = pageIndex; document.getElementById('mvcpager_btn').click(); } } </script> @if (Model.IsAjax) { <script type="text/javascript"> function checkInput(totalPage) { totalPage = totalPage; var pageIndexStr = document.getElementById('CurrentPageIndex').value; if (pageIndexStr == "") { alert('请输入页码'); document.getElementById('CurrentPageIndex').focus(); document.getElementById('CurrentPageIndex').select(); return false; } var pageIndex = parseInt(pageIndexStr); var r = new RegExp("^\\s*(\\d+)\\s*$"); if (r.test(pageIndex)) { if (RegExp.$1 < 1 || RegExp.$1 > totalPage) { alert("页索引超出范围!"); document.getElementById('CurrentPageIndex').focus(); document.getElementById('CurrentPageIndex').select(); return false; } postAjaxPage(pageIndex); } alert("页索引不是有效的数值!"); document.getElementById('CurrentPageIndex').focus(); document.getElementById('CurrentPageIndex').select(); return false; } function postAjaxPage(pageIndex) { var data = '&CurrentPageIndex=' + pageIndex; //data=data + '&CurrentPageCss=' + document.getElementById('page.CurrentPageCss').value; data = data + '&DispPageCount=' + document.getElementById('page.DispPageCount').value; data = data + '&PageSize=' + document.getElementById('page.PageSize').value; getAjaxPageData(data); } </script> }else { <script type="text/javascript"> function checkInput(totalPage) { totalPage = totalPage; var pageIndexStr = document.getElementById('CurrentPageIndex').value; if (pageIndexStr == "") { alert('请输入页码'); document.getElementById('CurrentPageIndex').focus(); document.getElementById('CurrentPageIndex').select(); return false; } var pageIndex = parseInt(pageIndexStr); var r = new RegExp("^\\s*(\\d+)\\s*$"); if (r.test(pageIndex)) { if (RegExp.$1 < 1 || RegExp.$1 > totalPage) { alert("页索引超出范围!"); document.getElementById('CurrentPageIndex').focus(); document.getElementById('CurrentPageIndex').select(); return false; } return true; } alert("页索引不是有效的数值!"); document.getElementById('CurrentPageIndex').focus(); document.getElementById('CurrentPageIndex').select(); return false; } </script> } @for (int i = 0; i < Model.DispPageCount; i++) { if ((Model.PageFirst + i) <= Model.TotalPage) { if (Model.CurrentPageIndex == (Model.PageFirst + i)) { <a href="javascript:gotopage(@(Model.PageFirst + i),@Model.TotalPage)" style="margin-right:10px;color:#FF0000;">@(Model.PageFirst + i)</a> } else { <a href="javascript:gotopage(@(Model.PageFirst + i),@Model.TotalPage)" style="margin-right:10px;">@(Model.PageFirst + i)</a> } } } @if ((Model.PageFirst + Model.DispPageCount) <= Model.TotalPage) { <a href="javascript:gotopage(@(Model.PageFirst + Model.DispPageCount),@Model.TotalPage)" style="margin-right:10px;">. .</a> } @if (Model.CurrentPageIndex < Model.TotalPage) { <a href="javascript:gotopage(@(Model.CurrentPageIndex + 1),@Model.TotalPage)" style="margin-right:10px;">后页</a> <a href="javascript:gotopage(@Model.TotalPage,@Model.TotalPage)" style="margin-right:10px;">尾页</a> } else { <a disabled="disabled" style="margin-right:10px;">后页</a> <a disabled="disabled" style="margin-right:10px;">尾页</a> } <span> 转到</span> <input type="text" onclick="this.select()" value="@Model.CurrentPageIndex" name="CurrentPageIndex" id="CurrentPageIndex" style="width:30px;" /><span>页</span> <input type="submit" value="Go" name="mvcpager" id="mvcpager_btn" onclick="return checkInput(@Model.TotalPage)" /> </div> }
3、业务分页处理
视图VIEWMODEL
public class Seach:PageMvc
{
}
/// <summary> /// 简历搜索 /// </summary> /// <param name="model"></param> public void Seach(Seach model) { model.TotalCount = //数据库计算 }
在业务视图里面追加
@Html.Partial(“~/Views/Shared/Page.cshtml”, Model)
相关文章推荐
- 如何在 Linux/Windows/MacOS 上使用 .NET 进行开发
- 如何在 Linux 中安装微软的 .NET Core SDK
- more、less 和 most 的区别
- C#.NET获取拨号连接的宽带连接方法
- C#.Net ArrayList的使用方法
- 十万条Access数据表分页的两个解决方法
- sqlserver关于分页存储过程的优化【让数据库按我们的意思执行查询计划】
- 高效的mysql分页方法及原理
- asp又一个分页的代码例子
- SqlServer 2000、2005分页存储过程整理第1/3页
- PowerShell中使用.NET将程序集加入全局程序集缓存
- .net(c#)中的new关键字详细介绍
- 由vbs sort引发.NET Framework之间的关系说明
- ADO存取数据库时如何分页显示
- C#难点逐个击破(6):C#数据类型与.net framework数据类型
- .NET中的async和await关键字使用及Task异步调用实例
- 透彻掌握ASP分页技术很详细的分析
- 基于.NET平台常用的框架和开源程序整理
- 一条SQL语句搞定Sql2000 分页
- 分页 SQLServer存储过程