extjs 如何完全删除网格及其列

px9o7tmv  于 2022-11-04  发布在  其他
关注(0)|答案(1)|浏览(208)

我已经实现了扩展Ext.grid.Panel的Grid A,并实现了扩展Grid A的其他一些Grid。对于扩展Grid A的所有Grid,我已经通过它们的父Grid(Grid A)的构造函数向它们添加了额外的列。

constructor: function() {       

    this.columns.push({
        xtype: 'gridcolumn',
        //id: 'removeColumn',
        header: '',
        sortable: false,
        dataIndex: 'action',
        width: 25,
        renderer: function (action, metaData, record, row, col, store, gridView) {
            if (action == 'add') return icon = '<img style="height: 15px;width: 15px;"  src="images/add.png"/>';
            else return icon = '<img style="height: 15px;width: 15px;"  src="images/close.png"/>';
        }

    });

    this.callParent(arguments);
}

因此,上面的代码在网格A的所有子网格的末尾添加了一个额外的列。我已经在Panel上添加了所有这些网格(比如GridsPanel),这些控件将进一步添加到选项卡中。GridsPanel是可关闭的(也可以通过按钮在Tab中重新添加)。单击关闭按钮时,它会成功关闭,但每当我将GridsPanel重新添加到选项卡时,网格A在所有子网格的末尾添加了两列。事实上,网格A并没有添加两列,但在关闭GridsPanel之前添加的列仍然存在,并且没有被删除。类似地,关闭GridsPanel并通过单击按钮再次创建它,将向子网格添加另一列,从而使添加的列总数达到3。因此,构造函数的功能实际上是正确工作的,即它在子网格的末尾添加了一个额外的列,但在完全销毁网格时存在一些问题。

qyuhtwio

qyuhtwio1#

我得到了解决方案,并想与其他人分享它,因为它可能会帮助其他人。问题实际上是在添加额外的列在每个子网格的末尾在构造函数。添加额外的列在网格viewready事件解决了问题。

viewready: function(object){

        column = {
            xtype: 'gridcolumn',
            //id: 'removeColumn',
            detachOnRemove : false,
            header: '',
            sortable: false,
            dataIndex: 'action',
            width: 25,
            renderer: function (action, metaData, record, row, col, store, gridView) {
                if (action == 'add') return icon = '<img style="height: 15px;width: 15px;"  src="images/add.png"/>';
                else return icon = '<img style="height: 15px;width: 15px;"  src="images/close.png"/>';
            }

        };

        object.headerCt.insert(object.columns.length, column);
        object.getView().refresh();
}

因此,以这种方式添加柱会完全破坏轴网及其柱。

相关问题