基于avalon+jquery做的bootstrap分页控件

刚开始学习avalon,项目需要就尝试写了个分页控件Pager.js;基于BootStrap样式这个大家都很熟悉

在这里推荐下国产前端神器avalon;确实好用,帮我解决了很多前端问题。

不多说了,代码贴上:

 1 /**
 2  * options.id avalon 所需要的$id
 3  * options.total 总记录数
 4  * options.rows 行数
 5  * options.callback
 6  */
 7 var Pager=function(options){
 8     var _this=this;
 9     _this.callback=options.callback||function(){};
10     _this.model=avalon.define({
11         $id:options.id,
12         currentPage:3,
13         rows:10,
14         totalRecord:100,
15         totalPage:10,
16         list:[],
17         liPageNums:3,
18         init:function(options){//初始化
19             _this.model.reset(options);
20             _this.model.currentPage=1;
21
22         },
23         jump:function(page){//界面跳转
24             _this.callback.call(_this,page,_this.model.rows);
25             _this.model.currentPage=page;
26             _this.model.refresh();
27             //alert(page);
28         },
29         prev:function(){
30             if(_this.model.currentPage-1<1)return;
31             _this.model.jump(_this.model.currentPage-1);
32         },
33         next:function(){
34             if(_this.model.currentPage+1>_this.model.totalPage)return;
35             _this.model.jump(_this.model.currentPage+1);
36         },
37         refresh:function(){//刷新分页工具栏,计算显示内容
38             _this.model.list=[];
39             var ll=new Array();
40             var cp=_this.model.currentPage;
41             for(var i=_this.model.liPageNums;i>0;i--){
42                 ll.push(cp-i);
43             }
44             ll.push(cp);
45             for(var i=1;i<=_this.model.liPageNums;i++){
46                 ll.push(cp+i);
47             }
48             while(ll[0]<1){
49                 for(var i=0;i<ll.length;i++){
50                     ll[i]=ll[i]+1;
51                 }
52             }
53             while(ll[ll.length-1]>_this.model.totalPage){
54                 for(var i=0;i<ll.length;i++){
55                     ll[i]=ll[i]-1;
56                 }
57             }
58             for(var i=0;i<ll.length;i++){
59                 if(ll[i]>=1&&ll[i]<=_this.model.totalPage){
60                     _this.model.list.push(ll[i]);
61                 }
62             }
63         },
64         /**
65          * options.total 总记录数
66          * options.rows 每页记录数
67          */
68         reset:function(options){//数据加载后可按需要重置
69             _this.model.rows=options.rows||_this.model.rows;
70             _this.model.totalRecord=options.total||0;
71             _this.model.totalPage=_this.model.totalRecord%_this.model.rows==0?_this.model.totalRecord/_this.model.rows:parseInt(_this.model.totalRecord/_this.model.rows+1);
72             _this.model.refresh();
73         }
74     });
75     _this.getModel=function(){return _this.model;};
76     _this.model.init(options);
77 };

HTML

 1 <div class="col-md-12">
 2            <div class="m-page-footer" ms-controller="footer">
 3             <table width="100%">
 4                 <tr>
 5                 <td>
 6                     <div class="pages_info pull-left">显示 {{(currentPage-1)*rows+1}} 到 {{currentPage*rows>totalRecord?totalRecord:currentPage*rows}} 项,共 {{totalRecord}} 项 </div>
 7                 </td>
 8                 <td style="text-align:right;">
 9                     <div class="dataTables_paginate paging_simple_numbers pages_num">
10                         <ul class="pagination" style="margin:0;">
11                             <li class="paginate_button previous" ms-class="disabled:currentPage<=1" aria-controls="editable" tabindex="0" id="editable_previous"><a href="javascript:;" ms-click="prev">上一页</a></li>
12                             <li class="paginate_button " aria-controls="editable" tabindex="0" ms-repeat="list" ms-class="active:el==currentPage"><a href="javascript:;" ms-click="jump(el)">{{el}}</a></li>
13                             <li class="paginate_button next" ms-class="disabled:currentPage>=totalPage" aria-controls="editable" tabindex="0" id="editable_next"><a href="javascript:;" ms-click="next">下一页</a></li>
14                         </ul>
15                     </div>
16                 </td>
17                 </tr>
18             </table>
19         </div>
20   </div>

调用代码,callbakl回调指向列表刷新方法reloadGrid,function reloadGrid(page,rows)

    var pager=new Pager({id:"footer",rows:20,callback:reloadGrid});

     $.post("e",params,function(json){
            model.list=json.rows;
            pager.getModel().reset({total:json.total});

        },"json");    

最终效果:

时间: 2024-08-09 16:27:38

基于avalon+jquery做的bootstrap分页控件的相关文章

web分页控件AspNetPager的使用

首先要先引用AspNetPager.dll文件 然后在<html>上面添加下面代码: <%@ Register Assembly="AspNetPager" Namespace="Wuqi.Webdiyer" TagPrefix="webdiyer" %> 然后在repeater控件下添加AspNetPager控件: <webdiyer:aspnetpager id="AspNetPager1"

基于Bootstrap仿淘宝分页控件实现

.header { cursor: pointer } p { margin: 3px 6px } th { background: lightblue; width: 20% } table { text-align: center; margin-top: 20px; margin-left: 10px; margin-bottom: 20px } a { cursor: pointer; text-decoration: none; color: gray } a:hover { text

福利到~分享一个基于jquery的分页控件

前台分页控件有很多,以下是我的实现.默认情况下,点击页码会像博客园一样,在url后面加上"#p页码". 有2个参数需要注意: beforeRender: 在每个页码项呈现前会被调用,参数为页码的jQuery对象.这个时候我们可以在呈现前做一些处理,例如增加自己的属性等.默认情况下,点击页码,会在url后面加上“#p页码”,这样的url并不会刷新页面.如果我们需要刷新页面,例如url为,"default.aspx?index=页码",就可以在这个回调函数里处理. ca

自己做过分页功能吗?我们一起打造自己的分页控件

一.概述 这些日子在做一套系统,基本上告了一段落,其中包括分页相关的功能. 主要涉及:Url分页和Ajax 分页.而基本上开发中所用到的就这两种,当然有其他的方式,我们就不说了. 为什么会谈及这两种分页呢,原因如下 ajax 分页用户体验好,性能更好. Url 分页对于搜索引擎友好. 而做的这套系统两方面都需要,故此重新设计了分页方案.自认目前十分灵活便捷的分页控件. 二.效果预览 三.ajax分页的使用方式 说明:在配置分页参数的时候,smallPageUrl 表示加载每页内容的地址. 后台代

Angularjs中使用jquery分页控件

首篇,不知写何物,思来想去,敬上分页控件使用方法,望共同探讨. 分页乃前端数据展现之常用功能,而在我们使用的Angular js中,原生的分页需要将数据全部取到前端后,然后再到前端分页,在大批量数据操作时并不实用.接下来,我来介绍了将一种jquery的分页控件修改为Angularjs指令的方法. 首先在web项目中引用jquery1.10.Angularjs库文件以及jq-pagination控件. 我降指令名称为custompagination,为指令添加Html样式. 然后给指令添加对应的控

在DevExpress程序中使用Winform分页控件直接录入数据并保存

一般情况下,我们都倾向于使用一个组织比较好的独立界面来录入或者展示相关的数据,这样处理比较规范,也方便显示比较复杂的数据.不过在一些情况下,我们也可能需要直接在GridView表格上直接录入或者修改数据,这种对于字段比较少,而且内容相对比较简单的情况下,效率是比较高的一种输入方式.本篇随笔主要介绍在DevExpress程序中使用GridView直接录入数据并保存的实现,以及使用Winform分页控件来进行数据直接录入的实现操作. 1.在GridView上展示数据 在GridView上展示数据,只

MvcPager 免费开源分页控件3.0版发布!

MvcPager 3.0版在原2.0版的基础上进行了较大的升级,对MvcPager脚本插件重写并进行了大量优化.修复了部分bug并新增了客户端Javascript API等功能,使用更方便,功能更强大... MvcPager 3.0 更新说明: 修正了路由定义中对页索引参数使用约束而导致无法为页索引文本或下拉框生成跳链接的bug:修正了Ajax分页模式下,如果首次加载时数据只有一页且未设置AutoHide=false,则控件不呈现任何有效html标签,导致MvcPager初始化失败以及后续Aja

MvcPager分页控件使用注意事项!

初学MVC,做了个单页面应用,需要显示多个分页,并无刷新更新. 找到了MvcPager控件,非常好用,在使用ajax过程中遇到很多问题.慢慢调试和杨老师(MvcPaegr作者)请教,总于都解决了. 首先NuGet包添加上.搜索MvcPager可以找到. 控制器端必须引用 using Webdiyer.WebControls.Mvc; 后端就不多记录了,看下官方Demo差不多都理解了,主要记录下前端. <div> @Ajax.Pager(Model, new PagerOptions { Sho

分页控件AspNetPager的样式美化

自从吴旗娃推出了AspNetPager分页控件之后,受到了广大程序员朋友的喜爱,无数个网站都出现这个控件的身影.可是大部分网站程序员的朋友都是直接套用,导致满世界的分页控件样式都是一样的简洁,伤不起啊 在前段时间的开发网站的过程中,突然觉得这个简洁的样式看着和网站整体的风格实在不搭调,于是看看AspNetPager的最后生成html,写了一段CSS样式,将分页的样式和网站整体风格统一起来了. 效果如下: 做的不是很好看,希望大家不要丢砖头,俺的头没包棉絮,伤不起 ~-_-~ CSS样式表: /*