日期:2014-05-16  浏览次数:20391 次

Extjs的Grid合并列头 ->转载。挺有用的
对方答复都是
Ext.namespace("Ext.ux.plugins");
Ext.ux.plugins.GroupHeaderGrid = function(config) {
    Ext.apply(this, config);
};

Ext.extend(Ext.ux.plugins.GroupHeaderGrid, Ext.util.Observable, {
    init: function(grid) {
        var v = grid.getView();
        v.beforeMethod('initTemplates', this.initTemplates);
        v.renderHeaders = this.renderHeaders.createDelegate(v, [v.renderHeaders]);
        v.afterMethod('onColumnWidthUpdated', this.updateGroupStyles);
        v.afterMethod('onAllColumnWidthsUpdated', this.updateGroupStyles);
        v.afterMethod('onColumnHiddenUpdated', this.updateGroupStyles);
        v.getHeaderCell = this.getHeaderCell;
        v.updateSortIcon = this.updateSortIcon;
        v.getGroupStyle = this.getGroupStyle;
    },

    initTemplates: function() {
        var ts = this.templates || {};
        if (!ts.gcell) {
            ts.gcell = new Ext.Template(
                '<td class="x-grid3-hd {cls} x-grid3-td-{id}" style="{style}">',
                '<div {tooltip} class="x-grid3-hd-inner x-grid3-hd-{id}" unselectable="on" style="{istyle}">{value}</div>',
                '</td>'
            );
        }
        this.templates = ts;
    },

    renderHeaders: function(renderHeaders) {
        var ts = this.templates, rows = [], tw = this.getTotalWidth();
        for (var i = 0; i < this.cm.rows.length; i++) {
            var r = this.cm.rows[i], cells = [], col = 0;
            for (var j = 0; j < r.length; j++) {
                var c = r[j];
                c.colspan = c.colspan || 1;
                c.col = col;
                col += c.colspan;
                var gs = this.getGroupStyle(c);
                cells[j] = ts.gcell.apply({
                    id: c.id || i + '-' + col,
                    cls: c.header ? 'ux-grid-hd-group-cell' : 'ux-grid-hd-nogroup-cell',
                    style: 'width:' + gs.width + ';' + (gs.hidden ? 'display:none;' :