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

时间:2010-05-04 15:34:31

标签: extjs extjs3

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

6 个答案:

答案 0 :(得分:6)

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

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

答案 1 :(得分:1)

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

我使用“reconfigure”方法动态更改网格列: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/

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

在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);

答案 4 :(得分:0)

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

答案 5 :(得分:0)

也许试试

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

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