MVC中用Jpaginate分页

摘要:
看过几款分页插件,觉得Jpaginate比较简约,样式也比较容易的定制,而且体验也比较好,支持鼠标滑动效果。在App_Start文件夹中的BundleConfig.cs中写入://分页脚本bundles.Add;//分页样式bundles.Add;黄色mark的部分是自己取得名字。早_Layout.cshtml中引用:@Styles.Render@Scripts.Render@Scripts.Render2.在MVC3中,那就直接在_Layout.cshtml中引入即可.二、分页原理分页插件都一般都需要总页数,显示页数。显示的页面用partView,这样配合ajax实现异步翻页。
MVC中用Jpaginate分页 So easy!(兼容ie家族)

看过几款分页插件,觉得Jpaginate比较简约,样式也比较容易的定制,而且体验也比较好,支持鼠标滑动效果。先上效果图:

MVC中用Jpaginate分页第1张

整个过程很简单,只需要3步

一、引入相关样式和脚本:

1.MVC4中,用了Bundles,你可以把同一个类型多个样式或者脚本的捆绑在一起。调用的时候更加简洁,便于管理。这样还可以减少服务器请求,拥有缓存功能等好处。

在App_Start文件夹中的BundleConfig.cs中写入:

    //分页脚本
    bundles.Add(new ScriptBundle("~/bundles/jPaginate").Include("~/Content/jPaginate/jquery.paginate.js"));
    //分页样式            
    bundles.Add(new StyleBundle("~/bundles/jPaginateCss").Include("~/Content/jPaginate/css/style.css")); 

黄色mark的部分是自己取得名字。include中才是真正的资源地址。

早_Layout.cshtml中引用:

@Styles.Render("~/bundles/jPaginateCss")
@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/jPaginate")

2.在MVC3中,那就直接在_Layout.cshtml中引入即可.

 <link href="../../Content/jPaginate/css/style.css"rel="stylesheet"type="text/css" />
<script src="../../Content/jPaginate/jquery.paginate.js"type="text/javascript"></script>

二、分页原理

分页插件都一般都需要总页数显示页数。还有当前页数每页显示数目等,这些必须是根据具体的情况,后台去设置。在MVC中,我们设置好一个ViewModel,以Json返回去就行了。显示的页面用partView,这样配合ajax 实现异步翻页。

复制代码
/// <summary>
        ///每页显示的条数
        /// </summary>
        private const int DefaultTopicPageCount = 20;
        /// <summary>
        ///显示出来的页数
        /// </summary>
        private const int DefaultDisplayCount = 8;
        /// <summary>
        ///首页话题列表
        /// </summary>
        /// <returns></returns>
        public ActionResult TopicList(int? pageIndex=1)
        {
            if (pageIndex == 0 || pageIndex == null)
                pageIndex = 1;
            var tops = LoveDb.TopicAll().Where(n => n.IsValid).OrderByDescending(n =>n.UpDataTime);
            var totalcount =tops.Count();// 所有topic的数目
            var startIndex = (pageIndex - 1) *DefaultTopicPageCount; //每页起始话题数
            var endIndex = (pageIndex) * DefaultTopicPageCount - 1;//每页结束话题数
            if (endIndex >= totalcount) endIndex =totalcount;
            var seletops = tops.Where((t, i) => i >= startIndex && i <=endIndex).ToList();//选出在起始数和结束数之间的topic 也就是当前页要显示的topic
            foreach (var topic in seletops.Where(topic => topic.Title.Length>18))
            {
                topic.Title = topic.Title.Substring(0, 15) + "...";
            }
            returnPartialView(seletops);
        }
        /// <summary>
        ///分页 抛给前台的数据
        /// </summary>
        /// <returns></returns>
        publicJsonResult TopicPager()
        {
            //需要计算出总的页数
          var count=  LoveDb.TopicAll().Count(n =>n.IsValid);
          var page = (int) Math.Ceiling((double)count /DefaultTopicPageCount);
            var pager = newPager
                {
                    DisplayCount = page > DefaultDisplayCount ?DefaultDisplayCount : page,//显示页数调整 
                    PageCount =page,
                    ItemCount =DefaultTopicPageCount,//这个可以忽略
                    StarPage = 1};
            returnJson(pager);
        }
复制代码

三、前端分页实现

复制代码
<script type="text/javascript">$(function() {
        $.post("/Interactive/TopicPager", function(data) {
            $("#pager").paginate({
                count: data.PageCount,//总页数
                start: data.StarPage,//起始页
                display: data.DisplayCount,//显示的页数
                border: true,
                border_color: '#fff',//自己调整样式。
                text_color: 'black',
                background_color: 'none',
                border_hover_color: '#ccc',
                text_hover_color: '#000',
                background_hover_color: '#fff',
                images: false,
                mouse: 'press',
                onChange: function(page) {//翻页
                    $.post("/Interactive/TopicList", { pageIndex: page }, function(content) {
                        $("#topiclist").html(content);
                    });
                }
            });
        });
})
</script>  
复制代码

这样就就ok了。

其他样式:

MVC中用Jpaginate分页第6张MVC中用Jpaginate分页第7张

下载地址:http://tympanus.net/codrops/2009/11/17/jpaginate-a-fancy-jquery-pagination-plugin/

如果对你有帮助,就请支持一下~ MVC中用Jpaginate分页第8张:)

标签:分页

免责声明:文章转载自《MVC中用Jpaginate分页》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇kernel启动分析SQL基础(五):SQL函数下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Mysql 实现分页功能

分页查询语句: select * from 表名 limit start,count ; select * from 表名 limit count offset start; 说明: limit是分页查询关键字 start表示开始行索引,默认是0 count表示查询条数 假设数据库表emp存有13条数据: 代码示例: 语句1:select...

分页--PageHelper的使用

POM依赖 <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>5.2.0</version&g...

ASP.NET MVC 3.0(十六): MVC 3.0 实例系列之表格数据的分页

ASP.NET MVC 3.0(一): MVC 3.0 的新特性 摘要 ASP.NET MVC 3.0(二): MVC的概念及MVC 3.0开发环境 ASP.NET MVC 3.0(三): 初识MVC的Url映射潜规则Routing ASP.NET MVC 3.0(四): 我要MVC潜规则之配置Routing ASP.NET MVC 3.0(五): 入手C...

Mybatis的插件 PageHelper 分页查询使用方法

Mybatis的一个插件,PageHelper,非常方便mybatis分页查询。国内牛人的一个开源项目,有兴趣的可以去看源码,都有中文注释(ps:某些源码一大堆英文,痛哭流涕!) 在github上仓库地址为:Mybatis-PageHelper 它支持基本主流与常用的数据库,这可以在它的文档上看到。这里记录一下使用的基本方法 0.查看文档与使用准备...

网页分页数据抓取三种方式

一、使用第三方工具,其中最著名的是火车头采集器,在此不做介绍。   二、自己写程序抓取,这种方式要求站长自己写程序,可能对对站长的开发能力有所要求了。   本人起初也曾试着用第三方的工具抓取我所需要的数据,由于网上的流行的第三方工具不是不符合我的要求,就是过于复杂,我一时没有搞明白怎么用,后来索性决定自己写吧,现在本人基本上半天可以搞定一个网站(只是程序开...

有关调用接口的个人理解

---恢复内容开始--- 之前我个人对于java的想法,是把java想的太简单:无非就是通过一些操作实现增删改查。直到了解到高并发,开始思考每个java中的“工具”,比如集合比如输入输出流是有很多讲究的。 后来变成,我把java想的太难,于是畏手畏脚,不敢改代码 ,只想着先完成基本功能就好。这也就是造成我这次“失误”的原因。 一.背景 说是失误,其实并不是...