$(function () { var tablepage_methods = { }; $.fn.tablepage = function (settings, n1) { var _gridid = $(this).attr("id"); if (_gridid == null) return; var pageControl = $(".datagrid-pager:[tableid='" + _gridid + "']"); if (pageControl.length == 0) return; if (settings == null) {//第一次初始化。如果没有数据不需要初始化 var pageHtml = '
'; pageHtml += '
'; var methods = JSON.parse($(pageControl).attr("pagination")); //========limit选择=============== pageHtml += '"; //========Count数据量============= pageHtml += '共 0 条'; //========上一页======================= pageHtml += ''; //========第一页======================= pageHtml += '';//详细页数 pageHtml += '1'; pageHtml += ''; //========下一页======================= pageHtml += ''; //========到第几页===================== pageHtml += '到第'; //========刷新当前page================= pageHtml += ''; pageHtml += "
"; $(pageControl).html(pageHtml); //点击那一页 $(".datagrid-pager:[tableid='" + _gridid + "'] [data-page]:not(.layui-disabled)").live("click", function () { var methods = JSON.parse($(pageControl).attr("pagination")); methods.page = parseInt($(this).attr("data-page")); $(pageControl).find("[drump]").val(methods.page); $("#" + _gridid).tablegrid("Load", methods); }); //点击跳转页面按钮 $(pageControl).find("[drumpbtn]").click(function () { var te = /^[1-9]+[0-9]*]*$/; var methods = JSON.parse($(pageControl).attr("pagination")); var drumpvalue = $(pageControl).find("[drump]"); if (!te.test($(drumpvalue).val())) { $(this).val(1); methods.page = 1; } else { var pageNumber = parseInt($(drumpvalue).val()); if (pageNumber <= 1) methods.page = 1; else if (pageNumber >= methods.totalPages) methods.page = methods.totalPages; else methods.page = pageNumber; } $("#" + _gridid).tablegrid("Load", methods); pagination_state_load(methods); }); ///调整每页limit $(pageControl).find("[lay-ignore]").change(function () { var methods = JSON.parse($(pageControl).attr("pagination")); methods.rows = $(this).val(); methods.page = 1; $(pageControl).find("[drump]").val(methods.page); $("#" + _gridid).tablegrid("Load", methods); pagination_state_load(methods); }); } else if (settings == "getPagination") { var methods = JSON.parse($(pageControl).attr("pagination")); return methods; } else if (settings == "setPagination") { pagination_state_load(n1); } ///修改上一页下一页的按钮状态 function chnageFisrtOrLast(pageControl, methods) { $(pageControl).find('.layui-laypage-refresh').attr("data-page", methods.page); if (methods.page <= 1) { $(pageControl).find('.layui-laypage-prev').attr("data-page", methods.page - 1).addClass("layui-disabled"); } else { $(pageControl).find('.layui-laypage-prev').attr("data-page", methods.page - 1).removeClass("layui-disabled"); } if (methods.page >= methods.totalPages) { $(pageControl).find('.layui-laypage-next').attr("data-page", methods.page + 1).addClass("layui-disabled"); } else { $(pageControl).find('.layui-laypage-next').attr("data-page", methods.page + 1).removeClass("layui-disabled"); } } function pagination_state_load(methods) { var shenlvehtml = ''; methods = $.extend($("#" + _gridid).tablepage("getPagination"), methods); var nowhtml = ""; if (methods.totalPages <= 6) {//如果大于6页,中间部分页面用....代替 for (var i = 1; i <= methods.totalPages; i++) { if (i == methods.page) { nowhtml += '' + methods.page + ''; } else { nowhtml += '' + i + ''; } } } else {//超过6页 if (methods.page == 1) nowhtml += '1';//选中了第一页 else nowhtml += '1';//第一页 if ((methods.page - 1) > 3) { nowhtml += shenlvehtml;//省略号 } if (methods.page < 5) {//小于5的时候 for (var i = 2; i <= 5; i++) { if (i == methods.page) { nowhtml += '' + i + '';//选中了最后一页 } else { nowhtml += '' + i + '';// } } } else if ((methods.totalPages - methods.page) > 3) { for (var i = methods.page - 2; i <= methods.page + 2; i++) { if (i == methods.page) { nowhtml += '' + i + '';//选中了最后一页 } else { nowhtml += '' + i + '';// } } } else { for (var i = methods.totalPages - 4; i < methods.totalPages; i++) { if (i == methods.page) { nowhtml += '' + i + '';//选中了最后一页 } else { nowhtml += '' + i + '';// } } } if ((methods.totalPages - methods.page) > 3) { nowhtml += shenlvehtml;//省略号 } if (methods.page == methods.totalPages) //最后一页 nowhtml += '' + methods.totalPages + '';//选中了最后一页 else nowhtml += '' + methods.totalPages + '';// } chnageFisrtOrLast(pageControl, methods);//修改上一页和下页状态 $(pageControl).find(".depage").html(nowhtml); $(pageControl).find(".layui-laypage-count").html("共 " + methods.totalRows + " 条"); //var pageHtml = '
'; //pageHtml +='
'; //pageHtml += "
"; //$(pageControl).html(pageHtml); //$("[tableid='" + _gridid + "'] .pagination-num").val(methods.page); //$(pageControl).find("[nid='ofPage']").html("of " + methods.totalPages); //$(pageControl).find(".pagination-info").html(function () { // return "共 " + methods.totalRows + " 条"; //}); //if (methods.page <= 1) { // $("[tableid='" + _gridid + "'] .pagination-first").parent().parent().parent().addClass("l-btn-disabled"); // $("[tableid='" + _gridid + "'] .pagination-prev").parent().parent().parent().addClass("l-btn-disabled"); //} //else { // $("[tableid='" + _gridid + "'] .pagination-first").parent().parent().parent().removeClass("l-btn-disabled"); // $("[tableid='" + _gridid + "'] .pagination-prev").parent().parent().parent().removeClass("l-btn-disabled"); //} //if (methods.page >= methods.totalPages) { // $("[tableid='" + _gridid + "'] .pagination-next").parent().parent().parent().addClass("l-btn-disabled"); // $("[tableid='" + _gridid + "'] .pagination-last").parent().parent().parent().addClass("l-btn-disabled"); //} else { // $("[tableid='" + _gridid + "'] .pagination-next").parent().parent().parent().removeClass("l-btn-disabled"); // $("[tableid='" + _gridid + "'] .pagination-last").parent().parent().parent().removeClass("l-btn-disabled"); //} $(pageControl).attr("pagination", JSON.stringify(methods)); } } $.fn.tablegrid = function (settings, n1) { //console.log("settings:" + settings); //console.log(n1); var _gridid = $(this).attr("id"); if (_gridid == null) return; var parames = { url: '',//地址 data: {},//参数 height: 0,//高度 isCheckMore: false,//是否可以多选 isRotating30: true,//是否为转动30s自动关闭转动 //page: 1,//当前第几页 //rows: 15,//每页行数 //order: "",//排序方式 //sort: "",//排序列 loadNow: false//是否立马更新数据 } var qutype = typeof (settings); if (qutype == "string" || qutype == null) { if (settings == null) {//啥都不传,重新样式 datagrid_style_load(); } else if (settings == "getSelected") { var selected = {}; var index = 0; $("#" + _gridid + " .tr_onclick td:[field]").each(function (i, n) { var _html = $.trim($(n).text()); selected[$(n).attr("field")] = (_html == " " ? "" : _html); index++; }); if (index == 0) return null; else return selected; } else if (settings == "getHead") { var head = []; var index = 0; $("#" + _gridid + " th[field]:not(:hidden)").each(function (i, n) { head[i] = { field: $(n).attr("field"), title: $(n).text() }; index++; }); if (index == 0) return null; else return head; } else if (settings == "getAllHead") { var head = []; var index = 0; $("#" + _gridid + " th[field]").each(function (i, n) { head[i] = { field: $(n).attr("field"), title: $(n).text() }; index++; }); if (index == 0) return null; else return head; } else if (settings == "getSelections") { var selections = new Array(); var index = 0; $("#" + _gridid + " .tr_onclick").each(function (i, n) { var row = {}; $(n).find("td:[field]").each(function (j, m) { var _html = $(m).html() row[$(m).attr("field")] = (_html == " " ? "" : _html); }); selections[i] = row; index++; }); return selections; } else if (settings == "getAllRows") { var selections = new Array(); var index = 0; $("#" + _gridid + " tr:gt(0)").each(function (i, n) { var row = {}; $(n).find("td:[field]").each(function (j, m) { var _html = $(m).html() row[$(m).attr("field")] = (_html == " " ? "" : _html); }); selections[i] = row; index++; }); return selections; } else if (settings == "getOptions") { return JSON.parse($("#" + _gridid).attr("gridParames")); } else if (settings == "Load") { if (n1 == null) n1 = $("#" + _gridid).tablepage("getPagination"); datagrid_getData(n1); } else if (settings == "Search") { if (n1 == null) n1 = $("#" + _gridid).tablepage("getPagination"); datagrid_getData($.extend(n1, { page: 1 })); } else if (settings == "Clear") { $("#" + _gridid).tablepage("setPagination", { page: "1", totalRows: "0", totalPages: "0" }); $("#" + _gridid + " tbody").html(""); } else if (settings == "resize") { if (parseInt(n1.height) < 200) n1.height == 200; $("#" + _gridid).parent().height(n1.height); $("#" + _gridid).parent().parent().height(n1.height + 60); } } else if (qutype == "object") { $.extend(parames, settings); $("#" + _gridid).tablepage();//加载分页 $("#" + _gridid).attr("gridParames", JSON.stringify(parames));//存储table参数信息 //给委托赋值 funcLoad(); $("#" + _gridid + " .tablegrid_sort").unbind('click').click(function () {//排序操作的绑定 if ($(this).hasClass("tablegrid_sort_desc"))//有过有升序 { $("#" + _gridid + " .tablegrid_sort_asc").removeClass("tablegrid_sort_asc");//移除所有效果 $("#" + _gridid + " .tablegrid_sort_desc").removeClass("tablegrid_sort_desc"); $(this).addClass("tablegrid_sort_asc"); } else { $("#" + _gridid + " .tablegrid_sort_asc").removeClass("tablegrid_sort_asc");//移除所有效果 $("#" + _gridid + " .tablegrid_sort_desc").removeClass("tablegrid_sort_desc"); $(this).addClass("tablegrid_sort_desc"); } $("#" + _gridid).tablegrid("Load");//重新加载数据 }); if (parames.loadNow) { var pagemessage = $("#" + _gridid).tablepage("getPagination");//获取分页信息 if (pagemessage != null) { parames.page = pagemessage.page; parames.rows = pagemessage.rows; parames.orders = pagemessage.orders; parames.sorts = pagemessage.sorts; n1 = pagemessage; } datagrid_getData(parames);//加载数据 if (pagemessage != null) { $("#" + _gridid).tablepage("setPagination", n1); } } datagrid_style_load(); } function datagrid_getData(params) { var orderCloumn = $("#" + _gridid + " .tablegrid_sort_asc");//排序列 if (orderCloumn.length > 0) { params.sort = $(orderCloumn).attr("field"); params.order = "asc"; } else { orderCloumn = $("#" + _gridid + " .tablegrid_sort_desc");//排序列 if (orderCloumn.length > 0) { params.sort = $(orderCloumn).attr("field"); params.order = "desc"; } } var gridParames = JSON.parse($("#" + _gridid).attr("gridParames")); var allCanshu = $.extend({ columns: $("#" + _gridid).attr("columns") }, params); allCanshu = $.extend(allCanshu, gridParames); var canshu = { order: allCanshu.order, page: allCanshu.page, rows: allCanshu.rows, sort: allCanshu.sort, totalPages: allCanshu.totalPages, totalRows: allCanshu.totalRows, columns: allCanshu.columns }; var dataType = typeof (tablepage_methods[_gridid]["data"]); if (dataType == "function") { canshu = $.extend(canshu, tablepage_methods[_gridid]["data"]()); } else if (dataType = "object") { canshu = $.extend(canshu, tablepage_methods[_gridid]["data"]); } else { } var r_ajax_position = { url: gridParames.url, type: "Post", data: $.extend(canshu, GetParams()), dataType: "json", async: true,//异步请求 loading: true, success: function (data) { if ($("#" + _gridid).find("thead").length > 0) $("#" + _gridid + " tbody").html(""); else $("#" + _gridid + " tr:gt(0)").remove(); if (data.errorMessag && data.errorMessag != "") { $.messageBoxAuto('提示', data.errorMessag); } else { $("#" + _gridid + " tbody").append(data.rowsList); if (data.foot != null) { if ($("#" + _gridid + " tfoot").length == 0) $("#" + _gridid).append("" + data.foot + ""); else { $("#" + _gridid + " tfoot").html(""); $("#" + _gridid + " tfoot").append(data.foot); } } if (n1 != null) { n1.totalPages = data.totalPages; n1.totalRows = data.totalRows; } datagrid_style_load(); $("#" + _gridid).tablepage("setPagination", n1); evalFunc("onLoadSuccess", data);//成功执行 } }, error: function (xx) { evalFunc("onLoadError");//成功执行 } } $.r_ajax(r_ajax_position); } //事件绑定 function datagrid_event_bind() { if ($("#" + _gridid).attr("state") == "true") return; var gridParames = JSON.parse($("#" + _gridid).attr("gridParames")); if (!gridParames.isCheckMore) $("#" + _gridid + " [ntype='checkAll']").remove(); else { $("#" + _gridid + " [ntype='checkAll']").click(function () { if ($(this).attr("checked") == "checked") $("#" + _gridid + " tr:gt(0)").not(":has(input:disabled)").addClass("tr_onclick").find("input:checkbox").attr("checked", "checked"); else $("#" + _gridid + " tr:gt(0)").not(":has(input:disabled)").removeClass("tr_onclick").find("input:checked").removeAttr("checked"); }); } $("#" + _gridid + " tbody tr:not(.grid_table_head)").live("click", function () { if (!gridParames.isCheckMore) { $("#" + _gridid + " .tr_onclick").removeClass("tr_onclick").find("input:checked").removeAttr("checked");//单选模式 $(this).addClass("tr_onclick").find(":checkbox").attr("checked", "checked"); } else { var checkbox = $(this).find(":checkbox"); if ($(checkbox).attr("disabled") == null) { $(this).toggleClass("tr_onclick"); if ($(this).hasClass("tr_onclick")) { $(checkbox).attr("checked", "checked"); } else { $(checkbox).removeAttr("checked"); } } } }); if (gridParames.height == 0) gridParames.height = $(window).height() - 170; gridParames.height = gridParames.height - 20; //console.log("我改了没"+gridParames.height); $("#" + _gridid).parent().height(gridParames.height); $("#" + _gridid).parent().parent().height(gridParames.height + 70); $("#" + _gridid).attr("state", "true");//已经加载完事件绑定 } function datagrid_style_load() { $("#" + _gridid + " tr:gt(1):even").addClass("bas_datagrid_tr_even"); datagrid_event_bind(); } function funcLoad() { tablepage_methods[_gridid] = { onLoadSuccess: settings.onLoadSuccess, onLoadError: settings.onLoadError, data: settings.data }; } function evalFunc(manager, data) { if (tablepage_methods[_gridid][manager] != null) tablepage_methods[_gridid][manager](data); } } });