var container; var URL_loaddata; var loadfinish; var g_cond_str; var _limit; jQuery.fn.extend({
Repeater: function (url_loaddata, cond_str, pagesize, ItemCreatedCallBack) { container = $(this); URL_loaddata = url_loaddata; _limit = pagesize; g_cond_str = cond_str; loadfinish = ItemCreatedCallBack; if ($("#callBackPager").attr("id") == undefined) { $(this).after('
'); $(this).after('加载中...
'); } $("#callBackPager").css("width", $(this).css("width")); $("#callBackPager").css("left", $(this).css("left")); $("#callBackPager").css("text-align", "right"); showPage(container, url_loaddata, 1, pagesize, ItemCreatedCallBack, true); }, RepeaterClear: function () {
this.each(function () {
if ($(this).data("_ItemTemplate") == null) { $(this).data("_ItemTemplate", $(this).find(".itemtemplate").toHTML()); }
$(this).find(".itemtemplate").remove();
});
}, RepeaterSetItemClass: function (class1, class2, hoverClass) {
this.each(function () {
if (class1 == null || class2 == null || hoverClass == null)
return; $(this).data("_class1", class1); $(this).data("_class2", class2); $(this).data("_hoverClass", hoverClass); if ($(this).data("_DataSrc") != null) { var domtype = $(this).find(".itemtemplate").attr('nodeName'); $(this).find(domtype).addClass(class1); $(this).find(domtype + ":nth-child(even)").addClass(class2); $(this).find(domtype).hover(function () { $(this).addClass(hoverClass); }, function () { $(this).removeClass(hoverClass); }); }
});
}, toHTML: function () {
var obj = $(this[0]); if (obj[0].outerHTML) { return obj[0].outerHTML; }
else {
if ($('.dc_hidearea') == null || $('.dc_hidearea')[0] == null) { $('body').append(""); }
$('.dc_hidearea').css('display', 'none'); $('.dc_hidearea').html(''); obj.clone(true).prependTo('.dc_hidearea'); var rs = $('.dc_hidearea').html(); $('.dc_hidearea').html(''); return rs;
}
}
}); function ____FindFiled(str) {
var myRegex = new RegExp("\{.+?\}", "gim"); var arr = str.match(myRegex); if (arr == null) return null; var count = arr.length; for (var i = 0; i < count; i++) { arr[i] = arr[i].Replace("{", "").Replace("}", ""); }
return arr;
}
function outerHTML($obj) {
var obj = ($obj[0]); if (obj.outerHTML) { return obj.outerHTML; }
else {
if ($('.dc_hidearea') == null || $('.dc_hidearea')[0] == null) { $('body').append(""); }
$('.dc_hidearea').css('display', 'none'); $('.dc_hidearea').html(''); obj.clone(true).prependTo('.dc_hidearea'); var rs = $('.dc_hidearea').html(); $('.dc_hidearea').html(''); return rs;
}
}
function extendPagination(obj, options) {
var defaults = { totalCount: '', showPage: '10', limit: '5', callback: function () { return false; } }; $.extend(defaults, options || {}); if (options.totalCount == '') { obj.empty(); return false; } else if (Number(options.totalCount) <= 0) { obj.empty(); return false; }
var totalCount = Number(options.totalCount), showPage = Number(options.showPage), limit = Number(options.limit), totalPage = Math.ceil(totalCount / limit); if (totalPage > 0) {
var html = []; html.push(' '); obj.html(html.join('')); if (totalPage > showPage) obj.find('ul.pagination li.next').prev().removeClass('hidden'); var pageObj = obj.find('ul.pagination'), preObj = pageObj.find('li.previous'), currentObj = pageObj.find('li').not('.previous,.disabled,.next'), nextObj = pageObj.find('li.next'); function loopPageElement(minPage, maxPage) {
var tempObj = preObj.next(); for (var i = minPage; i <= maxPage; i++) {
if (minPage == 1 && (preObj.next().attr('class').indexOf('hidden')) < 0)
preObj.next().addClass('hidden'); else if (minPage > 1 && (preObj.next().attr('class').indexOf('hidden')) > 0)
preObj.next().removeClass('hidden'); if (maxPage == totalPage && (nextObj.prev().attr('class').indexOf('hidden')) < 0)
nextObj.prev().addClass('hidden'); else if (maxPage < totalPage && (nextObj.prev().attr('class').indexOf('hidden')) > 0)
nextObj.prev().removeClass('hidden'); var obj = tempObj.next().find('a'); if (!isNaN(obj.html())) obj.html(i); tempObj = tempObj.next();
}
}
function callBack(curr) { defaults.callback(curr, defaults.limit, totalCount); }
currentObj.on("click", function (event) {
container.hide(); $("#myModal").show(); event.preventDefault(); var currPage = Number($(this).find('a').html()), activeObj = pageObj.find('li[class="active"]'), activePage = Number(activeObj.find('a').html()); if (currPage == activePage) return false; callbacknew(currPage); if (totalPage > showPage) { var maxPage = currPage, minPage = 1; if (($(this).prev().attr('class')) && ($(this).prev().attr('class').indexOf('disabled')) >= 0) { minPage = currPage - 1; maxPage = minPage + showPage - 1; loopPageElement(minPage, maxPage); } else if (($(this).next().attr('class')) && (obj.next().attr('class') != undefined && obj.next().attr('class').indexOf('disabled')) >= 0) { if (totalPage - currPage >= 1) maxPage = currPage + 1; else maxPage = totalPage; if (maxPage - showPage > 0) minPage = (maxPage - showPage) + 1; loopPageElement(minPage, maxPage) } }
activeObj.removeClass('active'); $.each(currentObj, function (index, thiz) { if ($(thiz).find('a').html() == currPage) { $(thiz).addClass('active'); } });
}); preObj.on('click', function (event) {
event.preventDefault(); var activeObj = pageObj.find('li[class="active"]'), activePage = Number(activeObj.find('a').html()); if (activePage <= 1) return false; if (totalPage > showPage) { var maxPage = activePage, minPage = 1; if ((activeObj.prev().prev().attr('class')) && (activeObj.prev().prev().attr('class').indexOf('disabled')) >= 0) { minPage = activePage - 1; if (minPage > 1) minPage = minPage - 1; maxPage = minPage + showPage - 1; loopPageElement(minPage, maxPage); } }
$.each(currentObj, function (index, thiz) { if ($(thiz).find('a').html() == (activePage - 1)) { activeObj.removeClass('active'); $(thiz).addClass('active'); callBack(activePage - 1); } });
}); nextObj.click(function (event) {
event.preventDefault(); var activeObj = pageObj.find('li[class="active"]'), activePage = Number(activeObj.find('a').html()); if (activePage >= totalPage) return false; if (totalPage > showPage) { var maxPage = activePage, minPage = 1; if ((activeObj.next().next().attr('class')) && (activeObj.next().next().attr('class').indexOf('disabled')) >= 0) { maxPage = activePage + 2; if (maxPage > totalPage) maxPage = totalPage; minPage = maxPage - showPage + 1; loopPageElement(minPage, maxPage); } }
$.each(currentObj, function (index, thiz) { if ($(thiz).find('a').html() == (activePage + 1)) { activeObj.removeClass('active'); $(thiz).addClass('active'); callBack(activePage + 1); } });
});
}
}
function DataBind(container, val, ItemCreatedCallBack) {
container.each(function () {
if (val == null || val == undefined) { return container.data("_DataSrc"); }
else {
try {
var valtype = (typeof val).toString(); if (valtype == 'string')
val = jsonStringToDataTable(val);
} catch (ex) { alert(ex); return; }
var domtype = container.find(".itemtemplate").attr('nodeName'); if (container.data("_ItemTemplate") == null) { container.data("_ItemTemplate", outerHTML(container.find(".itemtemplate"))); container.find(".itemtemplate").remove(); }
var TrContentTemplate = container.data("_ItemTemplate"); var fileds = ____FindFiled(TrContentTemplate); if (fileds == null) return false; var filedscount = fileds.length; count = val.length; container.data("_DataSrc", val); var area = container.find('tbody'); if (area == null || area.size() == 0) { area = container; }
area.empty(); for (var i = 0; i < count; i++) {
var NewTrContent = TrContentTemplate; NewTrContent = NewTrContent.Replace("{{", "{#"); NewTrContent = NewTrContent.Replace("}}", "#}"); for (var j = 0; j < filedscount; j++) { NewTrContent = NewTrContent.Replace("{" + fileds[j] + "}", val[i][fileds[j].trim()]); }
NewTrContent = NewTrContent.Replace("{#", "{"); NewTrContent = NewTrContent.Replace("#}", "}"); var area = container.find('tbody'); if (area == null || area.size() == 0)
area = container; area.append(NewTrContent);
}
}
});
}
function showPage(container, url, pageno, pagesize, ItemCreated, firstcall) {
container.hide(); $.ajax({
type: "get", url: url, async: true, dataType: "text", data: { 'pagesize': pagesize, 'pageno': pageno, 'condstr': g_cond_str }, success: function (data) {
totalCount = jsonStringToDataTable(data).totalCount; $("#hi_totalcount").val(totalCount); val = jsonStringToDataTable(data).elist; showCount = Math.ceil(parseInt(totalCount) * 1.0 / pagesize); if (pagesize >= totalCount) { $('#callBackPager').hide(); firstcall = false; }
else { $('#callBackPager').show(); if (firstcall) { extendPagination($('#callBackPager'), { totalCount: totalCount, showPage: 10, limit: limit, callback: function (curr, limit, totalCount) { container.hide(); $("#myModal").show(); showPage(container, url, curr, limit, ItemCreated, false); } }); } }
DataBind(container, val, ItemCreated); container.show(); $("#myModal").hide(); loadfinish();
}, error: function (XMLHttpRequest, textStatus, errorThrown) { alert("出现错误:" + textStatus); }
});
}
function callbacknew(curr) { container.hide(); $("#myModal").show(); setTimeout(_showPage(container, URL_loaddata, curr, _limit, loadfinish, false), 100); }
function _showPage(container, URL_loaddata, curr, _limit) { return function () { showPage(container, URL_loaddata, curr, _limit, loadfinish, false); } }