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

7

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

6个回答

6

这里的想法是提供问题的解决方案,然后提供一个查找更多详细信息的参考链接...只是一个链接...看一眼即可。 - Roberto

2

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

0

为了显示列更改,您可能需要刷新Ext.grid.GridView。

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

0
在 ExtJs 3.x 中,以下代码可以帮助您: < p > < em > 注意:我使用了复选框作为第一列。如果您不需要它,请删除该行。

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

0

或许尝试一下

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

或者使用store.remove()和store.commitChanges()


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接