zoomla
Version:
16年专业研发|中文alexa排名第一的CMS品牌-基于dotNET core、功能强大,集成站群、微信开发、小程序与ERP及OA办公系统,支持国际语言和多民族语言,世界五百强与大型门户专用高端网站内核CMS系统
100 lines • 4.11 kB
JavaScript
//专用于已有数据的分页
function ZLPage(list, row, opts) {
this.list = list;
this.conf = { cpage: 1, psize: 4, pnum: 9, itemCount: list.length };
this.conf.row = row;
this.conf.body = opts.body;// "#page_body";
this.conf.footer = opts.footer;// "#page_footer";
this.conf.rowEvent = opts.rowEvent;//行事件绑定
this.conf.pageCount = this.getPageCount(list.length, this.conf.psize);
this.showPage(this.conf.cpage);
}
ZLPage.prototype.getPageCount = function (itemCount, psize) {
var count = itemCount / psize + ((itemCount % psize > 0) ? 1 : 0);
if (!count || count < 1) { count = 1; }
return parseInt(count);//避免出现小数
};
ZLPage.prototype.getcpage = function (cpage) {
cpage = parseInt(cpage);
if (!cpage || cpage < 1) { cpage = 1; }
if (cpage > this.conf.pageCount) { cpage = this.conf.pageCount; }
return parseInt(cpage);
}
ZLPage.prototype.notifyListChange = function () {
var conf = this.conf;
conf.itemCount = this.list.length;
conf.pageCount = this.getPageCount(conf.itemCount, conf.psize);
}
//填充数据进入body
ZLPage.prototype.showPage = function (cpage) {
var ref = this;
ref.conf.cpage = ref.getcpage(cpage);
var data = this.selpage();
var $body = $(this.conf.body);
var $items = JsonHelper.FillItem(this.conf.row, data, this.conf.rowClick);
$body.html("").append($items);
ref.createFooter();
}
//对数据进行分页处理,返回要显示的数据列
ZLPage.prototype.selpage = function () {
var conf = this.conf;
var start = (conf.cpage - 1) * conf.psize;
var end = conf.psize * conf.cpage;
if (end > this.list.length) { end = this.list.length; }
var data = [];
for (var i = start; i < end ; i++) {
data.push(this.list[i]);
}
return data;
}
//根据数据与配置,生成底部html
ZLPage.prototype.createFooter = function () {
var ref = this;
var conf = this.conf;
//计算起始页,等于则减一位
var start = parseInt(conf.cpage / conf.pnum) * conf.pnum;
if (conf.cpage % conf.pnum == 0) { start = start - conf.pnum; }
//---------------Begin
var $ul = $('<ul class="pagination">');
var $first = $('<li><a href="javascript:;" title="首页">«</a></li>');
if (conf.cpage == 1) { $first.addClass("disabled"); }
else { $first.click(function () { ref.showPage(1); }); }
$ul.append($first);
if (conf.cpage > conf.pnum) {
var $pre = $('<li><a href="javascript:;">...</a></li>');
$pre.click(function () { ref.showPage(start - conf.pnum + 1); });
$ul.append($pre);
}
//底部分页列表,不能超出总大小,不能超过pnum
for (var i = 0; i < (conf.pageCount - start) && i < conf.pnum; i++) {
var liPage = (start + i) + 1;
var getli = function (index) {
var $li = $('<li><a href="javascript:;">' + index + '</a></li>');
$li.click(function () { ref.showPage(index); });
if (index == conf.cpage) { $li.addClass("active"); }
$ul.append($li);
}(liPage);
}
//---------------End
if (conf.pageCount > (start + conf.pnum)) {
$next = $('<li><a href="javascript:;">...</a></li>');
$next.click(function () { ref.showPage(start + conf.pnum + 1); });
$ul.append($next);
}
var $last = $('<li><a href="javascript:;" title="尾页">»</a></li>');
if (conf.cpage == conf.pageCount) { $last.addClass("disabled"); }
else { $last.click(function () { ref.showPage(conf.pageCount); }); }
$ul.append($last);
$(conf.footer).html("").append($ul);
}
//-----------------------------------------------
//var list = [];
//for (var i = 0; i < 300; i++) {
// list.push({ name: "admin" + i, "pwd": "zzeee" + i });
//}
//var page = new ZLPage(list, '<div><span>@name</span><span style="color:red;">@pwd</span></div>', {
// body: "#page_body",
// footer: "#page_footer",
// //psize: 10, cpage: 1,pnum:9,
// rowEvent: null
//});