$(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) { $(pageControl).find("a:.l-btn-plain:not(.l-btn-disabled )").live("click", function () { var methods = JSON.parse($(pageControl).attr("pagination")); switch ($(this).attr("id")) { //{"rows":15,"page":1,"order":"id","sort":null,"totalRows":16,"totalPages":2} case "page_first": methods.page = 1; break; case "page_prev": methods.page = methods.page - 1; break; case "page_next": methods.page = methods.page + 1; break; case "page_last": methods.page = methods.totalPages; break; default: break; } $("#" + _gridid).tablegrid("Load", methods); }); $(pageControl).find(".pagination-num").change(function () { var te = /^[1-9]+[0-9]*]*$/; var methods = JSON.parse($(pageControl).attr("pagination")); if (!te.test($(this).val())) { $(this).val(1); methods.page = 1; } else { var pageNumber = parseInt($(this).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); }); $(pageControl).find(".pagination-page-list").change(function () { var methods = JSON.parse($(pageControl).attr("pagination")); methods.rows = $(this).val(); methods.page = 1; $("#" + _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 pagination_state_load(methods) { methods = $.extend($("#" + _gridid).tablepage("getPagination"), methods); $("[tableid='" + _gridid + "'] .pagination-num").val(methods.page); $(pageControl).find("[nid='ofPage']").html("of " + methods.totalPages); $(pageControl).find(".pagination-info").html(function () { return "从 " + ((methods.page - 1) * methods.rows + 1) + " 到 " + ((methods.page * methods.rows > methods.totalRows ? methods.totalRows : methods.page * methods.rows)) + " 共 " + 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) { 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 + 70); } } else if (qutype == "object") { $.extend(parames, settings); $("#" + _gridid).tablepage();//加载分页 $("#" + _gridid).attr("gridParames", JSON.stringify(parames));//存储table参数信息 //给委托赋值 funcLoad(); $("#" + _gridid + " .tablegrid_sort").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").live("mouseover", function () { $(this).addClass("tr_onmouser_over"); }).live("mouseout", function () { $(this).removeClass("tr_onmouser_over"); }).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() - 140; $("#" + _gridid).parent().height(gridParames.height); $("#" + _gridid).parent().parent().height(gridParames.height + 70); $("#" + _gridid).attr("state", "true");//已经加载完事件绑定 } function datagrid_style_load() { $("#" + _gridid + " tr:gt(0):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); } } });