动手编写插件-javascript分页插件
原来公司用的报表分页插件是C#编写的服务器插件,需要前后台交互,而且不支持ajax。
经过一段时间折腾,我编写了一个轻便的jquery分页插件,支持ajax。下面是插件代码
/*
插件名称:报表分页
作者:Keven 调用方法:
1.在html报表下面增加<div class="pageInfo"></div>
2. javascript代码 $(".pageInfo").PageInit();
3.定义函数setResult,把json数据赋值到表格中
参数:
url:数据请求地址
Ajax数据格式:
json格式;需要返回分页数据,格式:"Page":{"TotalCount":"7","PageSize":"20"}
*/ ; (function ($) {
var PageNumber = 1;
var PageSize = 1;
var MaxPage = 1;
var RequestUrl; //外部接口函数
$.fn.extend({
'PageInit': function (op) {
if (op != undefined) {
if (op.url != undefined) {
RequestUrl = op.url;
}
if (op.PageSize != undefined) {
PageSize = op.PageSize;
}
}
if ($(this).html() == "") {
var divLink = $('<div class="pageLink fl"></div>');
with (divLink) {
append('<a href="#" class="PageFirst">首页</a>');
append('<a href="#" class="PagePre">上一页</a>');
append('<input type="number" class="PageNumber" value="1"/>');
append('<a href="#" class="PageNext">下一页</a>');
append('<a href="#" class="PageLast">尾页</a>');
append('<a href="#" class="PageGoto">跳转</a>');
find('a').before('<span class="split-left">[</span>');
find('a').after('<span class="split-right">]</span>');
}
$(this).append(divLink);
$(this).append('<div class="page" style="float:right;margin-right:5px;">第<label class="PageNumber red"<label/>页<span class="split">|</span>共<label class="MaxPage red"<label/>页<span class="split">|</span>共<label class="TotalCount red"></label>条记录</div>');
}
InitEvent();
Search(1);//首次加载时查询
}
});
$.extend({
'GetPageNumber': function () {
return PageNumber;
},
'SetPageNumber': function (pagenumber) {
PageNumber = pagenumber;
Search();
}
}); //通过Ajax获取后台JSON数据
function Search() {
if (RequestUrl == undefined) {
return;
}
var vData = 'pageNumber=' + PageNumber + "&" + $('#form1').serialize();
if (PageSize > 1) {
vData += "&PageSize=" + PageSize;
}
$.ajax({
type: 'POST',
dataType: "text",
ContentType: "application/json; charset=utf-8",
url: RequestUrl,
data: vData,
success: function (result, status, xhr) {
result = eval("(" + result + ")");
//页码信息
$('input.PageNumber').val($.GetPageNumber());
PageSize = result.Page.PageSize;
TotalCount = result.Page.TotalCount;
MaxPage = Math.ceil(TotalCount / PageSize);
$('.TotalCount').text(TotalCount);
$('.MaxPage').text(MaxPage);
$('label.PageNumber').text(PageNumber);
//表格信息
setResult(result);
},
error: function (err, A, B) {
}
});
}; //初始化事件
function InitEvent() {
//点击【首页】
$('.PageFirst').on('click', function () {
PageNumber = 1;
Search();
});
//点击【上一页】
$('.PagePre').on('click', function () {
if (PageNumber > 1) {
PageNumber -= 1;
Search();
}
});
//点击【下一页】
$('.PageNext').on('click', function () {
if (PageNumber < MaxPage) {
PageNumber += 1;
Search();
}
});
//点击【末页】
$('.PageLast').on('click', function () {
PageNumber = MaxPage;
Search();
});
//点击【跳转】
$('.PageGoto').on('click', function () {
var p = $('input.PageNumber').val();
if (!isNaN(p) && p!="") {
PageNumber = parseInt(p);
Search();
}
});
}; })(jQuery);
首先需要在报表下面编写一个div
<div class="pageInfo"></div>
用到的CSS:
.pageInfo {
margin-top: 3px;
}
.pageInfo .PageNumber {
width: 80px;
vertical-align: middle;
}
.split-left {
margin-left: 5px;
}
.split-right {
margin-right: 5px;
}
.split {
margin: 10px;
}
.pageInfo a {
text-decoration: none;
font-size: 12px;
margin: 2px;
}
.hidden {
display:none;
}
.fl {
float:left;
display:inline;
}
.fr {
float:right;
display:inline;
}
然后在js代码中调用
$(function(){
$(".pageInfo").PageInit({ url: '../BLL/GetReportData.ashx' });
});
上效果图:

动手编写插件-javascript分页插件的更多相关文章
- 自制Javascript分页插件,支持AJAX加载和URL带参跳转两种初始化方式,可用于同一页面的多个分页和不同页面的调用
闲话部分 最近闲着实在无聊,就做了点小东西练练手,由于原来一直在用AspNetPager进行分页,而且也进行了深度的定制与原有系统整合的也不错,不过毕竟是用别人的,想着看自己能试着做出来不能,后台的分 ...
- mybatis generator插件系列--分页插件
1.首先定义分页插件 MysqlPagePlugin.java package com.demo.mybatis.plugin; import org.mybatis.generator.api.Co ...
- PageHelper分页插件及通用分页js
分页概述 1.物理分页 物理分页依赖的是某一物理实体,这个物理实体就是数据库,比如MySQL数据库提供了limit关键字,程序员只需要编写带有limit关键字的SQL语句,数据库返回的就是分页结果. ...
- Springboot 系列(十二)使用 Mybatis 集成 pagehelper 分页插件和 mapper 插件
前言 在 Springboot 系列文章第十一篇里(使用 Mybatis(自动生成插件) 访问数据库),实验了 Springboot 结合 Mybatis 以及 Mybatis-generator 生 ...
- jQuery分页插件(jquery.page.js)的使用
效果描述: 不用分页即可显示的jQuery插件 jQuery分页插件——jQuery.page.js用法很简单,效果很棒 1.前端 首先html的head中引入相关css与js <lin ...
- MyBatis学习总结_17_Mybatis分页插件PageHelper
如果你也在用Mybatis,建议尝试该分页插件,这一定是最方便使用的分页插件. 分页插件支持任何复杂的单表.多表分页,部分特殊情况请看重要提示. 想要使用分页插件?请看如何使用分页插件. 物理分页 该 ...
- javascript日历插件
原文:javascript日历插件 javascript日历插件 最近在尝试着写javascript日历插件,所以也到github上看国外人日历源码,或者国内人写的好点的,也在研究点,虽然看到网上有一 ...
- SpringBoot 使用 MyBatis 分页插件 PageHelper 进行分页查询
前言:本文档使用的是 SpringBoot,如果是 Spring 还需要在 MyBatis 配置 xml 中配置拦截器,并且 PageHelper 是针对 MyBatis 的,MyBatis 的集成不 ...
- springboot + mybatis配置分页插件
一:使用pagehelper配置分页插件 1:首先配置springboot +mybatis框架 参考:http://www.cnblogs.com/liyafei/p/7911549.html 2 ...
随机推荐
- linux学习笔记之硬盘分区
引用:http://www.cnblogs.com/xiaoluo501395377/archive/2013/04/03/2997098.html PS:本文仅对知识点作总结.详情请参考原文. 首先 ...
- 【Lucene4.8教程之六】QueryParser与Query子类:如何生成Query对象
一.概述 1.对于一个搜索而言,其核心语句为: searcher.search(query, 10); 此时,其最重要的参数为一个Qeury对象.构造一个Query对象有2种方法: (1)使用Quer ...
- ajax全局函数运用
- webservice跨服务器上传附件
最近一个项目,用到文件上传功能,本来简单地使用upload控件直接post到服务器保存,简单实现了.后来考虑到分布是部署,静态附件.图片等内容要单独服务器(命名为B服务器,一台,192.168.103 ...
- cocos2d.js
1.节点是Cocos2d最基础的东西 2.坐标与普通数学坐标一致 3.children属性表示节点的孩子,父节点位置变化,它包含的子节点也会跟着变化,以整体的形势移动 4.层(layer), 新建层: ...
- css3圆角讲解
Css3圆角讲解:想必大家对于图片,背景圆角,都不陌生吧, 圆角语法:border-radius:圆角值: 这个值可以使用:em ,ex,pt,px,百分比; Border-radius跟margin ...
- python运维开发(十四)----HTML基本操作
内容目录: HTML概述 head标签 body中常用标签 css选择器 css常用属性 HTML HTML概述 HTML是英文Hyper Text Mark-up Language(超文本标记语言) ...
- SQL Server 备份的 8 种方法。
方法 1. 完整备份 方法 2. 差异备份 方法 3. 部分备份(备份数据库的read_write部分) 方法 4. 文件备份 方法 5. 文件组备份 方法 6. 只复制备份 方法 7. 日志备份 - ...
- Nginx 配置指令的执行顺序(六)
前面我们在 (五) 中提到,在一个 location 中使用 content 阶段指令时,通常情况下就是对应的 Nginx 模块注册该 location 中的“内容处理程序”.那么当一个 locati ...
- 一步一步学python(四) - 字典
1.字典的使用 创建字典:phonebook = {'Alice': '1234' , 'Beth':'9120'} 2.dict函数 >>>items = [('name','Gu ...