Я реализовал Grid A, который расширяет Ext.grid.Panel, и реализовал некоторые другие Grid, которые расширяют Grid A. Для всех сеток, которые расширяют Grid A, я добавил к ним дополнительный столбец через конструктор их Parent Grid (Grid А)
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 на вкладку, Grid A добавляет два столбца в конец всех дочерних сеток. Дело в том, что Grid A не добавляет два столбца, а столбец, добавленный перед закрытием GridsPanel, остается и не удаляется. Аналогичным образом закрытие GridsPanel и повторное создание ее нажатием кнопки добавит еще один столбец в дочерние сетки, в результате чего общее количество добавленных столбцов будет равно 3. Таким образом, функциональность конструктора фактически работает правильно, т. е. он добавляет дополнительный столбец в конец дочернего элемента. сетки, но есть некоторая проблема с полным уничтожением сеток.