グリッドの列をその場で表示/非表示にする必要がありますが、ExtJs4にはそのための実装されたメソッドがないようです。
以前のバージョンでは、columnModelを使用する必要がありましたが、これはもう存在しません。
_grid.columns[index]
_を取得するだけで、hide()
またはshow()
はグリッドに影響しません。
grid.columnManaget.getColumns()[index].hide()
を使用すると、実際には列を非表示にできますが、再度表示することはできません(getColumns()
はその後その列を返さないため)。
以下が機能するはずです。
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);
}
}]
});
「グリッド」にアクセスしてから
yourGrid.columnManager.getColumns()[index].setVisible(false);
必要に応じて-EXT4
parent.doLayout();
EXT 6
parent.updateLayout();
以下が機能するはずです。
Ext.getCmp('simpsons').down('[dataIndex=ColumnName]').setVisible(false);
Ext.getCmp('gridId').columnManager.getColumns()[index].hide();
Ext.getCmp('gridId').doLayout();
これは私のために働きます