如何在网格面板中删除或添加列

Posted

技术标签:

【中文标题】如何在网格面板中删除或添加列【英文标题】:how to delete or add column in grid panel 【发布时间】:2010-05-04 15:34:31 【问题描述】:

grid.getcolumnModel().setHidden(0,true) 将对列菜单生效 而不是网格面板。在列菜单中,您可以启用或禁用列。我们如何动态添加或删除网格面板中的列?

【问题讨论】:

【参考方案1】:

我想这就是你要找的http://www.extjs.com/forum/showthread.php?53009-Adding-removing-fields-and-columns

请务必查看帖子中的帖子 #37。

【讨论】:

我们的想法是在这里找到问题的解决方案,然后提供参考以查找更多详细信息......只是一个链接......视线。【参考方案2】:

对于那些寻求 Ext.js 4.2 和 avobe 解决方案的人来说。

我使用“重新配置”方法来动态更改网格列:http://docs.sencha.com/extjs/4.2.2/#!/api/Ext.grid.Panel-method-reconfigure

这是一个很好的例子:http://marcusschiesser.de/2013/12/21/dynamically-changing-the-structure-of-a-grid-in-extjs-4-2/

【讨论】:

【参考方案3】:

您可能必须刷新 Ext.grid.GridView 才能显示列更改。

grid.getView().refresh(true) // true to refresh HeadersToo

【讨论】:

【参考方案4】:

在 ExtJs 3.x 中,这段代码可以提供帮助:

注意:我使用复选框作为第一列。如果不需要,请删除该行。

var newColModel = new Ext.grid.ColumnModel(
    columns: [
        grid.getSelectionModel(),
        
            header: 'New column 1'
        , 
            header: 'New column 2'
        
    ],
    defaults: 
        sortable: false
    
);

grid.store.reader = new Ext.data.JsonReader(
    root: 'items',
    totalProperty: 'count',
    fields: [
        // Please provide new array of fields here
    ]
);

grid.reconfigure(grid.store, newColModel);

【讨论】:

【参考方案5】:

reconfigure 函数可能不适用于插件。特别是如果你有类似FilterBar 的东西。

如果您只需要这样做一次,基于使用的一些全局设置可以使用initComponent 并更改您的初始配置。请务必在调用this.callParent();

之前对配置进行所有更改

使用 ExtJS 6.2 测试(但也应该适用于 ExtJS 4 和 5)

initComponent: function() 
    // less columns for this setting
    if (!app.Settings.dontUseFruits()) 
        var newColumns = [];
        for(var i=0; i<this.columns.items.length; i++) 
            var column = this.columns.items[i];
            // remove (don't add) columns for which `dataIndex` starts with "fruit"
            if (column.dataIndex.search(/^fruit/) < 0) 
                newColumns.push(column);
            
        
        this.columns.items = newColumns;
    

    this.callParent();

【讨论】:

【参考方案6】:

可以试试

store.add(new_record); store.commitChanges();

或 store.remove() 和 store.commitChanges()

【讨论】:

以上是关于如何在网格面板中删除或添加列的主要内容,如果未能解决你的问题,请参考以下文章

ExtJS:向网格中添加的列插入值

网格面板右键删除列

如何在Magento管理面板中添加Grid行中的按钮?

为 Ext JS 3.4 添加动态列

如何将列添加到已经存在的超网格?

如何将按钮或图像添加到道场网格