.NET MVC 分页控件

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;">.&nbsp;.</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;">.&nbsp;.</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>&nbsp;&nbsp;转到</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 = //数据库计算
    }

在业务视图里面追加



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值