您的位置:首页 > 其它

.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

[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)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  .net 分页