首页 > 解决方案 > Extjs 有状态网格。如何检查它是否是第一次创建?

问题描述

我使用了 3 个有状态的网格,它们在同一个视图中相互替换。这些网格中的 2 个只是扩展了第一个。网格之间的唯一区别是某些列的初始可见性。用户可以在列菜单中更改此可见性,并且由于有状态配置,此设置保持不变。

当我们只考虑有状态的部分时,一切都很好。但我不知道如何设置列的初始可见性。我试过这样

initComponent: function () {
    this.columnManager.getHeaderByDataIndex('firstIndex').setHidden(true);
    this.columnManager.getHeaderByDataIndex('secondIndex').setHidden(true);
}

并且它有效,第一次打开网格时隐藏列,当用户更改某些内容然后再次打开应用程序时可见。只有 1 个问题 - 在列菜单中,它们始终显示为隐藏,这显然是从我的 initComponent 函数中获取的。所以我认为也许有一种方法可以检查网格是否曾经显示过。就像是:

initComponent: function () {
    if (!this.getState()) {
        //hide given columns here
    }
}

但它也不起作用,因为状态始终为空。

标签: extjs

解决方案


你为什么不在网格的列配置中做呢?就像是

Ext.create('Ext.grid.Panel', {
    title: 'Simpsons',
    store: Ext.data.StoreManager.lookup('simpsonsStore'),
    columns: [{
        text: 'Name',
        dataIndex: 'name'
    }, {
        text: 'Email',
        dataIndex: 'email',
        flex: 1
    }, {
        text: 'Phone',
        dataIndex: 'phone',
        hidden: true // <--- HERE
    }]
});

推荐阅读