博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
nop前端分页实现思路及步骤
阅读量:6407 次
发布时间:2019-06-23

本文共 4442 字,大约阅读时间需要 14 分钟。

注:nop本身已经有啦可以实现分页的类,所以我们直接去使用就可以啦 。

(编程部分)步骤如下:

第一步,针对Model操作,在需要使用分页的界面Model中将分页类作为该Model类的成员,并在Modle的构造函数中实例化。代码如下:

public class NeedMessagePagerModel : BaseNopModel    {        public NeedMessagePagerModel()        {            PagingFilteringContext = new NewsPagingFilteringModel();              }        public NewsPagingFilteringModel PagingFilteringContext { get; set; }          } //NeedMessagePagerModel 为界面Model
 

第二步,针对控制器操作,方法需要参数,代码如下:

public ActionResult NewSchoolMessage(NewsPagingFilteringModel command)        {            DxcMessagePagerModel modelList = new DxcMessagePagerModel();            if (command.PageSize <= 0) command.PageSize = 10;            if (command.PageNumber <= 0) command.PageNumber = 1;          //entitys为从数据库中查询出的数据,并判断是否为空,不为空是进行分页操作                 if(entitys==null){                       return view();                     }                        var page = new PagedList
<实体model>
(entitys, command.PageNumber - 1, command.PageSize); modelList.PagingFilteringContext.LoadPagedList(page); modelList.BaseMessagesItems = page.Select(x =>//BaseMessagesItems为在BaseMessageModel中自定义的并实例化的容器装所需数据的容器 { BaseMessageModel model = new BaseMessageModel(); model.Id = x.Id; model.Title = x.Title; model.PictureUrl = x.Picture == null ? "" : _pictureService.GetPictureUrl((int)x.Picture); return model; }).ToList(); return View(modelList); } //BaseMessageModel为另一个视图Model

第三步,针对视图端的操作,代码如下:

@{                var pager = Html.Pager(Model.PagingFilteringContext).QueryParam("pagenumber");            }            @if (!pager.IsEmpty())            {                
@pager
}

以下为:实现原理的版本(单独系统开发时可以根据步骤加入使用)

第一步,接口定义,代码如下:

public interface IPageableModel    {        ///         /// The current page index (starts from 0)        ///         int PageIndex { get; }        ///         /// The current page number (starts from 1)        ///         int PageNumber { get; }        ///         /// The number of items in each page.        ///         int PageSize { get; }        ///         /// The total number of items.        ///         int TotalItems { get; }        ///         /// The total number of pages.        ///         int TotalPages { get; }        ///         /// The index of the first item in the page.        ///         int FirstItem { get; }        ///         /// The index of the last item in the page.        ///         int LastItem { get; }        ///         /// Whether there are pages before the current page.        ///         bool HasPreviousPage { get; }        ///         /// Whether there are pages after the current page.        ///         bool HasNextPage { get; }    }

第二步,实现继承,代码如下:

public abstract class BasePageableModel : IPageableModel    {        #region Methods        public virtual void LoadPagedList
(IPagedList
pagedList) { FirstItem = (pagedList.PageIndex * pagedList.PageSize) + 1; HasNextPage = pagedList.HasNextPage; HasPreviousPage = pagedList.HasPreviousPage; LastItem = Math.Min(pagedList.TotalCount, ((pagedList.PageIndex * pagedList.PageSize) + pagedList.PageSize)); PageNumber = pagedList.PageIndex + 1; PageSize = pagedList.PageSize; TotalItems = pagedList.TotalCount; TotalPages = pagedList.TotalPages; } #endregion #region Properties public int FirstItem { get; set; } public bool HasNextPage { get; set; } public bool HasPreviousPage { get; set; } public int LastItem { get; set; } public int PageIndex { get { if (PageNumber > 0) return PageNumber - 1; return 0; } } public int PageNumber { get; set; } public int PageSize { get; set; } public int TotalItems { get; set; } public int TotalPages { get; set; } #endregion }

第三步,继承抽象方法可以不实现从而直接使用父类的方法,(抽象方法不能实例化)。代码如下:

public partial class NewsPagingFilteringModel : BasePageableModel    {    }

 

最后步骤:通上述编程部分的步骤一,二,三。

 

posted on
2017-09-06 19:25 阅读(
...) 评论(
...)

转载于:https://www.cnblogs.com/wfaceboss/p/7486517.html

你可能感兴趣的文章
extjs4 panel下tools里的元素选择器
查看>>
Mac下使用Docker简单介绍
查看>>
SpringMvc Ehcache 实现缓存机制
查看>>
javascript闭包的使用
查看>>
Backbone.js 使用模板
查看>>
安装xenomai的记实
查看>>
linux下面快速删除大量文件及快速复制大量小文件
查看>>
微信小程序锁定当前页面(改代码后不跳首页)教程
查看>>
我们为什么需要SDN?---致新人
查看>>
自制VTP实验总结
查看>>
prime_test
查看>>
用python的smtplib发送邮件python2,3都可以使用
查看>>
返回Date+-后的时间
查看>>
日常记录
查看>>
DWR框架
查看>>
MYSQL安装
查看>>
程序员的七种武器(转载)
查看>>
【工具使用系列】关于 MATLAB 通讯应用,你需要知道的事
查看>>
Spring MVC + zTree调试过程出现406 not acceptable
查看>>
play framework如何进行模块化开发--学习笔记(借鉴同事、博客等资料自己试验通过!)...
查看>>