MVC异步分页

如图:

MVC异步分页

 

1: 控制器代码

//

        // GET: /AjaxUser/

        shopEntities shop = new shopEntities();

        public ActionResult Index()

        {

            return View();

        }



        public ActionResult loadjson()

        {

            int pageSize = Request["pageSize"] == null ? 10 : int.Parse(Request["pageSize"]);

            int pageIndex = Request["pageIndex"] == null ? 1 : int.Parse(Request["pageIndex"]);

            int totalCount = shop.tbl_admin.Count();



            //给前台userinfo所有的数据,并且是json格式

            var allorder = shop.tbl_admin.OrderBy(u=>u.id)

                .Skip(pageSize*(pageIndex-1))

                .Take(pageSize)

                .ToList();

            //接受一个对像,内部把此对象使用javaScript序列化类对象志字符串,发送到前台



            var data = from u in allorder select new { u.id,u.realname,u.sex};



            string strNav = PageNavHelper.ShowPageNavigate(pageIndex,pageSize,totalCount);



            var result = new {Data=data, NavStr=strNav };

            return Json(result, JsonRequestBehavior.AllowGet);

        }

  

 

2:Html代码

@{

    Layout = null;

}



<!DOCTYPE html>



<html>

<head>

    <meta name="viewport" content="width=device-width" />

   

    <title>Index</title>

    <link href="~/Content/NavPage.css" rel="stylesheet" />

    <script src="~/Scripts/jquery-1.8.2.min.js"></script>

    <script src="~/Scripts/jquery-ui-1.8.24.js"></script>

    <script src="~/Scripts/jquery.easyui.min.js"></script>

    <script src="~/Scripts/jquery.unobtrusive-ajax.js"></script>

    <script src="~/Scripts/jquery.validate.unobtrusive.js"></script>



    <script type="text/javascript">

        $(function () {

            //页面加载完成后从后如加载当前页数据

            initTable();

        });



        //初始化表格数据

        function initTable(queryData) 

        {

            $.getJSON("/AjaxUser/loadjson",queryData, function (data) {

                var tb = $("#tbList");

                //先移除旧的,添加新的

                $("#tbList tr[type=data]").remove();

                for (var i = 0; i < data.Data.length; i++)

                { 

                    var strTr = "<tr type='data'>";

                    strTr += "<td>" + data.Data[i].id + "</td>";

                    strTr += "<td>" + data.Data[i].realname + "</td>";

                    strTr += "<td>" + data.Data[i].sex + "</td>";

                    strTr += "<td><a UId='" + data.Data[i].id + "' href='javascript:void(0)'>修改</a>" +

                        "<a UId='" + data.Data[i].ID + "' href='javascript:void(0)'>删除</a></td>";

                    strTr += "</tr>";

                    tb.append(strTr);

                }

                $("#Nav").html(data.NavStr);



                //绑定分页标签的点击事件

                $(".pageLink").click(function () {

                    //把页码弹出来

                    var strHref = $(this).attr("href");

                    var queryStr = strHref.substr(strHref.indexOf('?') + 1);

                    //alert(queryStr);

                    initTable(queryStr);

                    return false;

                });

            });

        }

    </script>

</head>

<body>

    <div>

        <table id="tbList">

            <tr>

                <td>id</td>

                <td>姓名</td>

                <td>性别</td>

                <td>操作</td>

            </tr>

        </table>



        <div id="Nav" class="paginator">



        </div>

        

    </div>

</body>

</html>

  3:分页类

 

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Web;



namespace MvcTest4.Models

{

    public class PageNavHelper

    {

        //主要就是输出分页的超级链接的标签

        //自定义分页Helper扩展

        public static string ShowPageNavigate(int currentPage, int pageSize, int totalCount)

        {

            var redirectTo = HttpContext.Current.Request.Url.AbsolutePath;

            pageSize = pageSize <= 0 ? 3 : pageSize;

            var totalPages = Math.Max((totalCount + pageSize - 1) / pageSize, 1); //总页数

            var output = new StringBuilder();

            if (totalPages > 1)

            {

                //if (currentPage != 1)

                {//处理首页连接

                    output.AppendFormat("<a class='pageLink' href='{0}?pageIndex=1&pageSize={1}'>首页</a> ", redirectTo, pageSize);

                }

                if (currentPage > 1)

                {//处理上一页的连接

                    output.AppendFormat("<a class='pageLink' href='{0}?pageIndex={1}&pageSize={2}'>上一页</a> ", redirectTo, currentPage - 1, pageSize);

                }

                else

                {

                    // output.Append("<span class='pageLink'>上一页</span>");

                }



                output.Append(" ");

                int currint = 5;

                for (int i = 0; i <= 10; i++)

                {//一共最多显示10个页码,前面5个,后面5个

                    if ((currentPage + i - currint) >= 1 && (currentPage + i - currint) <= totalPages)

                    {

                        if (currint == i)

                        {//当前页处理

                            //output.Append(string.Format("[{0}]", currentPage));

                            output.AppendFormat("<a class='cpb' href='{0}?pageIndex={1}&pageSize={2}'>{3}</a> ", redirectTo, currentPage, pageSize, currentPage);

                        }

                        else

                        {//一般页处理

                            output.AppendFormat("<a class='pageLink' href='{0}?pageIndex={1}&pageSize={2}'>{3}</a> ", redirectTo, currentPage + i - currint, pageSize, currentPage + i - currint);

                        }

                    }

                    output.Append(" ");

                }

                if (currentPage < totalPages)

                {//处理下一页的链接

                    output.AppendFormat("<a class='pageLink' href='{0}?pageIndex={1}&pageSize={2}'>下一页</a> ", redirectTo, currentPage + 1, pageSize);

                }

                else

                {

                    //output.Append("<span class='pageLink'>下一页</span>");

                }

                output.Append(" ");

                if (currentPage != totalPages)

                {

                    output.AppendFormat("<a class='pageLink' href='{0}?pageIndex={1}&pageSize={2}'>末页</a> ", redirectTo, totalPages, pageSize);

                }

                output.Append(" ");

            }

            output.AppendFormat("第{0}页 / 共{1}页", currentPage, totalPages);//这个统计加不加都行



            return output.ToString();

        }

    }

}

  4:分页CSS

 

body {

}



.paginator {

    font: 12px Arial, Helvetica, sans-serif;

    padding: 10px 20px 10px 0;

    margin: 0px;

}



    .paginator a {

        border: solid 1px #ccc;

        color: #0063dc;

        cursor: pointer;

        text-decoration: none;

    }



        .paginator a:visited {

            padding: 1px 6px;

            border: solid 1px #ddd;

            background: #fff;

            text-decoration: none;

        }



    .paginator .cpb {

        border: 1px solid #F50;

        font-weight: 700;

        color: #F50;

        background-color: #ffeee5;

    }



    .paginator a:hover {

        border: solid 1px #F50;

        color: #f60;

        text-decoration: none;

    }



    .paginator a, .paginator a:visited, .paginator .cpb, .paginator a:hover {

        float: left;

        height: 16px;

        line-height: 16px;

        min-width: 10px;

        _width: 10px;

        margin-right: 5px;

        text-align: center;

        white-space: nowrap;

        font-size: 12px;

        font-family: Arial,SimSun;

        padding: 0 3px;

    }

  

你可能感兴趣的:(mvc)