Как полностью удалить сетку и ее столбцы

Я реализовал 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. Таким образом, функциональность конструктора фактически работает правильно, т. е. он добавляет дополнительный столбец в конец дочернего элемента. сетки, но есть некоторая проблема с полным уничтожением сеток.


person Waseem    schedule 14.11.2012    source источник


Ответы (1)


Я получил решение и решил поделиться им с другими, так как это может помочь другим. На самом деле проблема заключалась в добавлении дополнительного столбца в конце каждой дочерней сетки в конструкторе. Добавление дополнительного столбца в сетки viewready Event решило проблему.

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

Таким образом, добавление столбцов полностью уничтожает сетки и их столбцы.

person Waseem    schedule 15.11.2012