$.extend($.fn.datagrid.methods, { ???autoMergeCells : function (jq, fields) { ???????return jq.each(function () { ???????????var target = $(this); ???????????if (!fields) { ???????????????fields = target.datagrid("getColumnFields"); ???????????} ???????????var rows = target.datagrid("getRows"); ???????????var i = 0, ???????????????j = 0, ???????????????temp = {}; ???????????for (i; i < rows.length; i++) { ???????????????var row = rows[i]; ???????????????j = 0; ???????????????for (j; j < fields.length; j++) { ???????????????????var field = fields[j]; ???????????????????var tf = temp[field]; ???????????????????if (!tf) { ???????????????????????tf = temp[field] = {}; ???????????????????????tf[row[field]] = [i]; ???????????????????} else { ???????????????????????var tfv = tf[row[field]]; ???????????????????????if (tfv) { ???????????????????????????tfv.push(i); ???????????????????????} else { ???????????????????????????tfv = tf[row[field]] = [i]; ???????????????????????} ???????????????????} ???????????????} ???????????} ???????????$.each(temp, function (field, colunm) { ???????????????$.each(colunm, function () { ???????????????????var group = this; ???????????????????if (group.length > 1) { ???????????????????????var before, ???????????????????????????after, ???????????????????????????megerIndex = group[0]; ???????????????????????for (var i = 0; i < group.length; i++) { ???????????????????????????before = group[i]; ???????????????????????????after = group[i + 1]; ???????????????????????????if (after && (after - before) == 1) { ???????????????????????????????continue; ???????????????????????????} ???????????????????????????var rowspan = before - megerIndex + 1; ???????????????????????????if (rowspan > 1) { ???????????????????????????????target.datagrid(‘mergeCells‘, { ???????????????????????????????????index : megerIndex, ???????????????????????????????????field : field, ???????????????????????????????????rowspan : rowspan ???????????????????????????????}); ???????????????????????????} ???????????????????????????if (after && (after - before) != 1) { ???????????????????????????????megerIndex = after; ???????????????????????????} ???????????????????????} ???????????????????} ???????????????}); ???????????}); ???????}); ???}});
使用方法:
$(this).datagrid("autoMergeCells",合并字段数组);
$(this).datagrid("autoMergeCells",[‘areaname‘,‘businessnames‘]);
easyUI datagrid的合并的js封装
原文地址:https://www.cnblogs.com/wgl0126/p/9353700.html