jQuery的一个分页插件实践
admin
2023-08-02 15:56:24
0

最近安排一个小项目用到了BootStrap来做界面,分页也是必备的,但是找了一些BootStrap的分页插件感觉都不是太好用,很有可能是自己学的不太好,很长时间不太做前端界面了,也很生疏,接下来说下做的大体流程。
最终找到一个jQuery的分页插件:jQuery Pagination plugin
官网地址:

  • jQuery Pagination plugin官网
  • GitHub地址


page-demo1.jpg

代码:

$(\'#pagination-demo\').twbsPagination({
 totalPages: 35,
 visiblePages: 7,
 onPageClick: function (event, page) {
 $(\'#page-content\').text(\'Page \' + page);
 }
 });

    具体的流程不太了解,但是总体上是这样的,你不用管很多参数,只需要给后台传递page,也就是当前页就好,这个值在onPageClick事件中触发。
    具体说下我是如何实现的:

    • 设置totalPages
    • 将totalPages赋值到插件的参数中
    • 通过url参数请求后台
    • 处理后台返回数据

    插件的JS代码

    $(\'#pagination-demo\').twbsPagination({    totalPages: totalCount,    visiblePages: 5,    href : \'${cxf}/wiki/list/{{number}}\',    onPageClick: function (event, page) {        $(\'#page-content\').text(\'Page \' + page);    }});

    这里需要几个参数:

    • totalPages
    • url

    对于totalPages我是这样处理的:

    var totalCount = 20;//      $.ajax({        async:false,        type:\"get\",        dataType : \"json\",        url: \"${cxf}/wiki/queryAll\",        success : function(data){            if(data.status ==200){                totalCount = data.data;                totalCount = (totalCount % 10 == 0) ? totalCount / 10 : totalCount / 10 + 1;            }        }    });

    这里的逻辑是这样的:

    • ajax请求后台controller
    • 返回后台数据的个数
    • 前台获取到后进行分页,每页显示10条数据,将页数赋值给totalCount
    • 将totalCount赋值给totalPages

    Java后台的代码

    @RequestMapping(value = \"list/{page}\")
        public String listByPage(@PathVariable(value = \"page\") Integer start, Model model) {
            Integer limit = pageSize;
            if(start == null){
                start = 1;
            }
            List list = wikiContentService.listByPages(Integer.valueOf(start), limit);
            model.addAttribute(\"contents\", list);
            return \"list\";
        }
    
    
        @RequestMapping(value = \"queryAll\")
        @ResponseBody
        public WikiResult queryAll(){
            List list = wikiContentService.queryAll();
            WikiResult result = new WikiResult();
            result.setStatus(200);
            result.setData(list.size());
            return result;
        }

    最后的效果:


    page-demo2.jpg

    页面做的比较丑,不要见怪哟,自己对这块也不是很熟悉,在找资料的时候很多细节想不通,网上完整的代码也比较少,深刻的了解这里面的痛苦,自己虽然做出来了,但是效果还是不太好,肯定有更好的方法去实现,也请指教。

    2、Java分页

    分页其实可以由前台和后台共同完成。
    后台分页的逻辑就是:
    必须要有3个参数:

    • 总的数据数 total
    • 每页显示的数据 pageSize
    • 当前页 currentPage

    我会这么处理这些数据:

    • 拿到总的数据
    • 计算出有多少页
      total%pageSize == 0 ? total/pageSize : total%pageSize+1;
    • 然后根据当前页和每页显示的数量去数据库查询
    • 一般数据库都会有分页的这种查询,MySql提供了limit关键字

    大概也就这么些东西吧,不太详细,先分享了。

    相关内容

    热门资讯

    500 行 Python 代码... 语法分析器描述了一个句子的语法结构,用来帮助其他的应用进行推理。自然语言引入了很多意外的歧义,以我们...
    定时清理删除C:\Progra... C:\Program Files (x86)下面很多scoped_dir开头的文件夹 写个批处理 定...
    65536是2的几次方 计算2... 65536是2的16次方:65536=2⁶ 65536是256的2次方:65536=256 6553...
    Mobi、epub格式电子书如... 在wps里全局设置里有一个文件关联,打开,勾选电子书文件选项就可以了。
    scoped_dir32_70... 一台虚拟机C盘总是莫名奇妙的空间用完,导致很多软件没法再运行。经过仔细检查发现是C:\Program...
    小程序支付时提示:appid和... [Q]小程序支付时提示:appid和mch_id不匹配 [A]小程序和微信支付没有进行关联,访问“小...
    pycparser 是一个用... `pycparser` 是一个用 Python 编写的 C 语言解析器。它可以用来解析 C 代码并构...
    微信小程序使用slider实现... 众所周知哈,微信小程序里面的音频播放是没有进度条的,但最近有个项目呢,客户要求音频要有进度条控制,所...
    python查找阿姆斯特朗数 题目解释 如果一个n位正整数等于其各位数字的n次方之和,则称该数为阿姆斯特朗数。 例如1^3 + 5...
    Apache Doris 2.... 亲爱的社区小伙伴们,我们很高兴地向大家宣布,Apache Doris 2.0.0 版本已于...