easyUI(1)-------合并单元格

来源:互联网 发布:俄罗斯杜马选举知乎 编辑:程序博客网 时间:2024/05/22 10:24

在需要合并单元格的datagrid中加入onLoadSuccess事件:

onLoadSuccess: function (data) {            //指定列进行合并操作            $(this).datagrid("autoMergeCells", ['列名1', '列名2']);        }


其中的autoMergeCells方法需要写一下:

 $.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;                                    }                                }                            }                        });                    });                });            }        });