Ext.grid.Panelを拡張するグリッドAを実装し、グリッドAを拡張する他のいくつかのグリッドを実装しました。グリッドAを拡張するすべてのグリッドについて、親グリッド(グリッド)のコンストラクターを介して追加の列を追加しました。 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のすべての子グリッドの最後に追加の列を追加します。これらすべてのグリッドをパネル(たとえばGridsPanel)に追加し、さらにタブに追加しました。GridsPanelは閉じることができます(また、タブスルーボタンで再追加することもできます)。[閉じる]ボタンをクリックすると正常に閉じますが、GridsPanelをタブに再度追加すると、グリッドAはすべての子グリッドの最後に2つの列を追加します。実際には、グリッドAは2つの列を追加しませんが、GridsPanelを閉じる前に追加された列はまだそこにあり、削除されません。同様に、GridsPanelを閉じて、ボタンをクリックして再度作成すると、子グリッドに別の列が追加され、追加された列の総数が3になります。