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); } }