|
/*****************关于合并单元格算法的实现*************************/ //调用方式:mergerows("tbodyGuestDatum", 1, 2); //参数:第一个:表名 第二个:合并第一列 第二个:合并第二列 var arrtitle = new Array(); var index = 0; //递归调用 function mergerows(table, cols, cols1) { merge(table, cols);
if (parseInt(cols1) > parseInt(cols)) { for (var i = 0; i < arrtitle.length; i++) { index = 0; MergeSub(table, cols1, arrtitle[i]); } } } //合并单元格 function merge(table, cols) { var result = ""; var num = 0; var tr = $("#" + table + " tr[name!='hascospan']"); tr.each(function(i) { var td = $(this).find("td:eq(" + (cols - 1) + ")"); result = result == "" ? td.text() : result; if (jQuery.inArray(td.text(), arrtitle) == -1) { arrtitle.push(td.text()); } if (result == td.text()) { num += 1; if (num != 1) { td.remove(); } $(this).attr("name", "hascospan"); $(this).attr("type", result); } else { return false; } }).end(); $(tr[0]).find("td:eq(" + (cols - 1) + ")").text(result); $(tr[0]).find("td:eq(" + (cols - 1) + ")").attr("rowspan", num);
if ($("#" + table + " tr[name!='hascospan']").length == 0) return false; else merge(table, 1); //递归调用 }
//合并子单元格 function MergeSub(table, cols, title) { var result = ""; var num = 0; var tr = $("#" + table + " tr[type='" + title + "'][class!='yes']");
tr.each(function(i) { var td = i == 0 ? index == 0 ? $(this).find("td:eq(" + (cols - 1) + ")") : $(this).find("td:eq(0)") : $(this).find("td:eq(0)"); result = result == "" ? td.text() : result; if (result == td.text()) { num += 1; if (num != 1) { td.remove(); } $(this).attr("class", "yes"); } else return false; }).end(); if (index == 0) { $(tr[0]).find("td:eq(" + (cols - 1) + ")").text(result); $(tr[0]).find("td:eq(" + (cols - 1) + ")").attr("rowspan", num); } else { $(tr[0]).find("td:eq(0)").text(result); $(tr[0]).find("td:eq(0)").attr("rowspan", num); } if ($("#" + table + " tr[type='" + title + "'][class!='yes']").length == 0) return false; else { index = 1; MergeSub(table, cols, title); //递归调用 } } |