MVC的简单分页【转】

2020-12-13 06:10

阅读:355

标签:style   class   blog   c   code   java   

传值的方式是通过querystring。

本例子是把整需要的数据查出来再分页的,因为当时做的时候数据很少,只有几十条。

如果数据多的话,可以在存储过程里分页,只是要传页码和记录的条数过来。

控制器:

soscw.com,搜素材
//分页
            ViewBag.PageIndex = pageIndex;
            ViewBag.PageSize = pageSize;
            if (agentDetail.ProjectAgentStat!=null)
                ViewBag.RecondCount = agentDetail.ProjectAgentStat.Count; //如果在存储过程分页就要传这个值
            else
                ViewBag.RecondCount = 0;
            agentDetail.ProjectAgentStat = agentDetail.ProjectAgentStat.Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList();  //此处的数据源可以是在存储过程里分好的数据源 ,ProjectAgentStat 为IList的对象
return View(agentDetail);
soscw.com,搜素材

分页的控件:

soscw.com,搜素材
namespace System.Web.Mvc
{
    public static class PageHtml
    {
        /// 
        /// 扩展UrlHelper,实现输出分页HTML
        /// 
        /// 
        /// 控制器名
        /// 行为名
        /// 分页大小
        /// 当前页码
        /// 总记录数
        /// 
        public static MvcHtmlString Pager(this UrlHelper urlHelper, string controllerName, string actionName, int pageSize, int pageIndex, int recordCount)
        {
            // 如果分页大小等于0,则返回空字符串
            if (pageSize == 0)
            {
                return MvcHtmlString.Create(string.Empty);
            }

            // 根据总记录数和分页大小计算出分页数量
            int pageCount = (int)decimal.Ceiling((decimal)recordCount / (decimal)pageSize);

            // 首页、末页
            string firstStr = string.Empty;
            string lastStr = string.Empty;
            if (recordCount > 0)
            {
                string firstUrl = urlHelper.Action(actionName, controllerName, new { pagenum = 1 });
                firstStr = "" + firstUrl + "‘>首页";

                string lastUrl = urlHelper.Action(actionName, controllerName, new { pagenum = pageCount });
                lastStr = "" + lastUrl + "‘>末页";
            }
            else
            {
                firstStr = "首页";
                lastStr = "末页";
            }

            // 上一页
            string preStr = string.Empty;
            if (pageIndex > 1 && pageIndex  pageCount)
            {
                string prevUrl = urlHelper.Action(actionName, controllerName, new { pagenum = pageIndex - 1 });
                preStr = "" + prevUrl + "‘>上一页";
            }
            else
            {
                preStr = "上一页";
            }

            // 下一页
            string nextStr = string.Empty;
            if (pageIndex > 0 && pageIndex  pageCount)
            {
                string nextUrl = urlHelper.Action(actionName, controllerName, new { pagenum = pageIndex + 1 });
                nextStr = "" + nextUrl + "‘>下一页";
            }
            else
            {
                nextStr = "下一页";
            }

            // 页码
            string numStr = string.Empty;
            if (pageCount > 0)
            {
                // 遍历输出全部的页码
                for (int i = 1; i )
                {
                    string numUrl = urlHelper.Action(actionName, controllerName, new { pagenum = i });

                    // 当前页码加粗
                    if (i == pageIndex)
                    {
                        numStr += "[" + numUrl + "‘>" + i + "] ";
                    }
                    else
                    {
                        numStr += "[" + numUrl + "‘>" + i + "] ";
                    }
                }
            }

            string pageStr = firstStr + " " + preStr + " " + numStr + nextStr + " " + lastStr;

            return MvcHtmlString.Create(pageStr);
        }
    }
}
soscw.com,搜素材

视图:

@Url.Pager("project", "agentdetail/" + @Model.ProjectLineStat.ProjectId, (int)ViewBag.PageSize, (int)ViewBag.PageIndex, (int)ViewBag.RecondCount)

URL的样子为:/project/agentdetail/61?pagenum=2

参考网址:http://blog.bossma.cn/asp_net_mvc/asp-net-mvc-url-pager/

MVC的简单分页【转】,搜素材,soscw.com

MVC的简单分页【转】

标签:style   class   blog   c   code   java   

原文地址:http://www.cnblogs.com/ringwang/p/3741930.html

上一篇:数组的合并

下一篇:Python time模块


评论


亲,登录后才可以留言!