2

gridPanel の autoHeight プロパティとグループ化機能を併用すると不具合が発生するようです。

グループ化を startCollapsed に設定すると、グリッドの高さは折りたたまれた行の高さに設定されます (これは正しいです) が、グループを展開するとグリッドの高さが更新されないため、新しいコンテンツが古いコンテンツをプッシュします見えない領域。

sensha docs http://docs.sencha.com/ext-js/4-0/#!/api/Ext.grid.Panelの Grouping セクションに移動して以下のコードを貼り付けることで、問題を簡単に再現できます。 :

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()
});

この問題を回避し、アイテムを展開または折りたたんだときにグリッドのサイズを変更するにはどうすればよいですか?

4

1 に答える 1

2

まず、autoHeight構成はグリッド (または任意のコンポーネント) によってサポートされていません。

しかし、この動作は明らかにバグであり、Ext JS 4.1 で既に修正されています。

4.0.7 での回避策として、グループが展開/折りたたまれたときにレイアウトを明示的に強制することができます。

grid.getView().on({
    "groupexpand": function() {
        grid.doLayout();
    },
    "groupcollapse": function() {
        grid.doLayout();
    }
});
于 2012-03-16T10:11:53.873 に答える