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

发布于 2024-08-31 10:27:54 字数 100 浏览 6 评论 0原文

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

grid.getcolumnModel().setHidden(0,true) will be effected for column menu
and not grid panel. In column menu u can enable or disable the column. How do we add or remove the column in grid panel dynamically?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

忆悲凉 2024-09-07 10:27:54

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

确保您也查看了线程中的帖子#37。

I think this is what you are looking for http://www.extjs.com/forum/showthread.php?53009-Adding-removing-fields-and-columns

Make sure you look at post #37 in the thread as well.

人间☆小暴躁 2024-09-07 10:27:54

对于那些遇到此问题并正在寻找 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/动态改变extjs-4-2中网格的结构/

For those who reach this question looking for a solution for Ext.js 4.2 and avobe.

I use "reconfigure" method to dynamically change the grid columns: http://docs.sencha.com/extjs/4.2.2/#!/api/Ext.grid.Panel-method-reconfigure

Here is a nice example: http://marcusschiesser.de/2013/12/21/dynamically-changing-the-structure-of-a-grid-in-extjs-4-2/

雄赳赳气昂昂 2024-09-07 10:27:54

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

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

You may have to refresh the Ext.grid.GridView in order for the column change to show.

grid.getView().refresh(true) // true to refresh HeadersToo
眼眸 2024-09-07 10:27:54

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

In ExtJs 3.x this piece of code can help:

Note: I have used checkbox, as the first column. Please remove that line if you don't need it.

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);
溺孤伤于心 2024-09-07 10:27:54

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

The reconfigure function might not work well with plugins. Especially if you have something like FilterBar.

If you only need to do this once, based on some global settings that use can use initComponent and change your initial config. Be sure to make all changes to the config before calling this.callParent();

Tested with ExtJS 6.2 (but should also work for ExtJS 4 and 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();
爱她像谁 2024-09-07 10:27:54

也许尝试

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

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

maybe try

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

or store.remove() and store.commitChanges()

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文