');
var th = table.find("thead").find("tr").find("th");
var i = 0;
th.each(function() {
var val = header[i++];
if (val.width != undefined) {
$(this).width(val.width);
}
});
if (this.options.title != null)
$(this.element).prepend("
" + this.options.title + "
");
if(this.options.sort){
th.hover(function() {
$(this).addClass("t3");
$(this).css("cursor", "pointer");
}, function() {
$(this).removeClass("t3");
});
th.click(function(handler) {
return function() {
if (handler.options.select != null && handler.options.select == $(this).attr("code")) {
return;
}
if (handler.options.sort != $(this).attr("code")) {
handler.options.order = 0;
}
$(this).parent().find("th").find("span").removeClass(" ui-icon ui-icon-carat-1-n ui-icon-carat-1-s ");
if (handler.options.order == 0) {
$(this).find("span").addClass(" ui-icon ui-icon-carat-1-n ");
handler.options.order = 1;
} else if (handler.options.order == 1) {
$(this).find("span").addClass(" ui-icon ui-icon-carat-1-s ");
handler.options.order = -1;
} else if (handler.options.order == -1) {
handler.options.order = 0;
}
handler.options.sort = $(this).attr("code");
handler.clear();
handler.setupData();
if (handler.options.data.page != null)
handler.setupPage();
};
}(this));
}
},
// 刷新数据
_init : function() {
if (this.options.url != null) {
var data = {};
if (this.options.data != null && !$.isArray(this.options.data)) {
data = this.options.data;
} else if (this.options.data.page != null) {
if (this.options.data.page != null) {
data[this.options.pageField] = this.options.data.page;
}
if (this.options.data.limit != null) {
data[this.options.limitField] = this.options.data.limit;
}
}
//this.clear();
$.request({
action : this.options.url,
data : data,
success : function(handler) {
return function(data) {
handler.clear();//处理多次初始化的情况,每次先将数据清除
handler.data = data[handler.options["dataField"]];
handler.result = data;
if (handler.options.data.page != null) {
var page = data[handler.options["pagingField"]];
if (page != undefined) {
handler.options.maxRows = page.maxRows;
handler.options.data.limit = page.limit;
handler.options.data.page = page.page;
}
}
handler.setupData();
if (handler.options.data.page != null) {
handler.setupPage();
}
}
}(this),
error : function(handler) {
return function(data) {
if (handler.options.error != null)
handler.options.error(data);
}
}(this)
});
} else if (this.options.input != null) {
if ($.isArray(this.options.input)) {
this.options.maxRows = this.options.input.length;
if (this.options.data.page != null) {
var start = ((this.options.data.page - 1) * this.options.data.limit);
if (start < 0)
start = 0;
this.data = this.options.input.slice(start, start + this.options.data.limit);
} else {
this.options.data.limit = this.options.maxRows;
this.data = this.options.input;
}
} else {
var obj = this.options.input();
this.data = obj.data;
if (obj.limit != null)
this.options.data.limit = obj.limit;
if (obj.maxRows != null)
this.options.maxRows = obj.maxRows;
if (obj.page != null)
this.options.data.page = obj.page;
}
this.clear();
this.setupData();
if (this.options.data.page != null) {
this.setupPage();
}
}
},
// 清理表体数据
clear : function() {
$(this.element).find("table").find("tbody").empty();
if (this.options.select != null) {
var choiceAll = $(this.element).find("table").find("thead").find("th[code=" + this.options.select + "]").find("input[batch]");
choiceAll.prop("checked",false);
}
},
// 排序比较函数
sortData : function(sort, order) {
return function(x, y) {
var xs = x[sort] == undefined ? "" : x[sort];
var ys = y[sort] == undefined ? "" : y[sort];
return xs > ys ? order : xs < ys ? order * -1 : 0;
};
},
// 设置表体数据
setupData : function() {
var header = this.options.header;
if (this.options.select != null) {
header = $.merge([ {
code : this.options.select
} ], header);
}
if (this.options.sequence != null) {
header = $.merge([ {
code : this.options.sequence
} ], header);
}
var data = this.data.slice(0);
if (this.options.sort != null && this.options.order != 0) {
data.sort(this.sortData(this.options.sort, this.options.order));
}
var s = '';
for ( var i = 0; i < data.length; i++) {
s += "
";
for ( var j = 0; j < header.length; j++) {
var val = null;
if (this.options.select == header[j].code) {
val = "";
} else if(header[j].type == "amount"){
val = $.toCashWithCommaAndDot(data[i][header[j].code]+"");
}else{
val = data[i][header[j].code];
}
s += "
";
s += val == undefined ? "" : val;
s += "
";
}
s += "
";
}
$(this.element).find("table").append(s);
var tr = $(this.element).find("table").find("tbody").find("tr");
var i = 0;
tr.each(function() {
$(this).val(data[i++]);
});
tr.hover(function() {
$(this).addClass("t3");
}, function() {
$(this).removeClass("t3");
});
if (this.options.complete != null) {
this.options.complete(data, this.result);
}
if (this.options.sequence != null) {
var i = 1, page = this.options.data.page, limit = this.options.data.limit;
$(this.element).find("table").find("td[code='" + this.options.sequence + "']").each(function() {
$(this).html(i++ - 0 + (page - 1) * limit);
});
}
//全选时选中全选框
$(this.element).find("table").find("input[type=checkbox][name=" + this.options.select + "]").click(function(handler){
return function(){
var checkboxNum = $(handler.element).find("table").find("input[type=checkbox][name=" + handler.options.select + "]:visible").length;
var checkedNum = $(handler.element).find("table").find("input[type=checkbox][name=" + handler.options.select + "]:checked").length;
if(checkboxNum == checkedNum){
$(handler.element).find("table").find("input[batch]").prop("checked",true);
}else{
$(handler.element).find("table").find("input[batch]").prop("checked",false);
}
}
}(this));
//对全选框初始化
var checkboxNum = $(this.element).find("table").find("input[type=checkbox][name=" + this.options.select + "]:visible").length;
var checkedNum = $(this.element).find("table").find("input[type=checkbox][name=" + this.options.select + "]:checked").length;
if(checkedNum>0 && checkboxNum == checkedNum){
$(this.element).find("table").find("input[batch]").prop("checked",true);
}else{
$(this.element).find("table").find("input[batch]").prop("checked",false);
}
},
// 设置分页数据
setupPage : function() {
var tfoot=$(this.element).find("table").find("tfoot");
var foot = $(this.element).find("table").find("tfoot").find("tr").find("td");
if(this.options.maxRows>this.options.data.limit){
tfoot.show();
foot.html("");
foot.children().remove();
var cur = this.options.data.page;
cur = cur < 0 ? 0 : cur > this.options.maxRows ? this.options.maxRows : cur;
cur = cur - 0;
var first = 1;
var last = Math.floor(((this.options.maxRows - 1) / this.options.data.limit) + 1);
var prev = cur > first ? cur - 1 : first;
var next = cur < last ? cur + 1 : last;
var start = ((this.options.data.page - 1) * this.options.data.limit);
if (start < 0)
start = 0;
start = start + 1;
this.options.paging(this, foot, cur, start, this.options.data.limit, this.options.maxRows, first, last, prev, next);
}else{
tfoot.hide();
if(this.result.MINQueryResult.length==0){
tfoot.show();
foot.html("没有查询记录!");
}
}
},
destroy : function() {
// 有需要再写
}
});