368 lines
17 KiB
JavaScript
368 lines
17 KiB
JavaScript
|
|
$(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("<tfoot>" + data.foot + "</tfoot>");
|
|
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);
|
|
}
|
|
}
|
|
|
|
}); |