Ext JS GridPanel autoHeight не работает для свертывания группы - PullRequest
2 голосов
/ 16 марта 2012

Кажется, есть дефект при использовании свойства autoHeight на gridPanel вместе с функцией группировки.

Когда вы устанавливаете группировку в startCollapsed, высота сетки устанавливается равной высоте свернутых строк.(это правильно), но когда я расширяю группу, высота сетки не обновляется, и, следовательно, новый контент выталкивает старый контент в невидимую область.

Вы можете легко повторить проблему в документах sensha http://docs.sencha.com/ext-js/4-0/#!/api/Ext.grid.Panel. Для этого перейдите в раздел «Группировка» и вставьте следующий код:

var store = Ext.create('Ext.data.Store', {
    storeId:'employeeStore',
    fields:['name', 'senority', 'department'],
    groupField: 'department',
    data: {'employees':[
        { "name": "Michael Scott",  "senority": 7, "department": "Manangement" },
        { "name": "Dwight Schrute", "senority": 2, "department": "Sales" },
        { "name": "Jim Halpert",    "senority": 3, "department": "Sales" },
        { "name": "Kevin Malone",   "senority": 4, "department": "Accounting" },
        { "name": "Angela Martin",  "senority": 5, "department": "Accounting" }
    ]},
    proxy: {
        type: 'memory',
        reader: {
            type: 'json',
            root: 'employees'
        }
    }
});

var groupingFeature = Ext.create('Ext.grid.feature.Grouping',{
        startCollapsed: true
    });

Ext.create('Ext.grid.Panel', {
    title: 'Employees',
    store: Ext.data.StoreManager.lookup('employeeStore'),
    columns: [
        { header: 'Name',     dataIndex: 'name' },
        { header: 'Senority', dataIndex: 'senority' }
    ],
    features: [groupingFeature],
    width: 200,
    autoHeight: true,
    renderTo: Ext.getBody()
});

Что нужно сделать, чтобы обойти эту проблему и изменить размер сетки при развертывании или сворачивании элемента?

1 Ответ

2 голосов
/ 16 марта 2012

Во-первых, конфигурация autoHeight не поддерживается сеткой (или любым компонентом).

Но поведение явно является ошибкой, и оно уже исправлено в Ext JS 4.1.

Для обходного пути в 4.0.7 вы можете явно заставить макет произойти, когда группы развернуты / свернуты:

grid.getView().on({
    "groupexpand": function() {
        grid.doLayout();
    },
    "groupcollapse": function() {
        grid.doLayout();
    }
});
...