web-dev-qa-db-ja.com

ExtJs 4:グリッド列をその場で非表示/表示するにはどうすればよいですか?

グリッドの列をその場で表示/非表示にする必要がありますが、ExtJs4にはそのための実装されたメソッドがないようです。

以前のバージョンでは、columnModelを使用する必要がありましたが、これはもう存在しません。

_grid.columns[index]_を取得するだけで、hide()またはshow()はグリッドに影響しません。

grid.columnManaget.getColumns()[index].hide()を使用すると、実際には列を非表示にできますが、再度表示することはできません(getColumns()はその後その列を返さないため)。

7
paulodiovani

以下が機能するはずです。

Ext.create('Ext.grid.Panel', {
    title: 'Simpsons',
    id: 'simpsons',
    store: Ext.data.StoreManager.lookup('simpsonsStore'),
    columns: [
        { text: 'Name',  dataIndex: 'name' },
        { text: 'Email', dataIndex: 'email', flex: 1 },
        { text: 'Phone', dataIndex: 'phone' }
    ],
    height: 200,
    width: 400,
    renderTo: Ext.getBody(),
    dockedItems:[{
        xtype:'button',
        handler: function() {
            if(Ext.getCmp('simpsons').columns[0].isVisible())
                Ext.getCmp('simpsons').columns[0].setVisible(false);
            else
                Ext.getCmp('simpsons').columns[0].setVisible(true);
        }
    }]
});
10
third_eye

「グリッド」にアクセスしてから

yourGrid.columnManager.getColumns()[index].setVisible(false);

必要に応じて-EXT4

parent.doLayout();

EXT 6

parent.updateLayout();
3
Pankaj Avhad

以下が機能するはずです。

Ext.getCmp('simpsons').down('[dataIndex=ColumnName]').setVisible(false);
2
Naresh Kokkula
Ext.getCmp('gridId').columnManager.getColumns()[index].hide();
Ext.getCmp('gridId').doLayout();

これは私のために働きます

0
panwar