как удалить или добавить столбец в сетке - PullRequest
6 голосов
/ 04 мая 2010

grid.getcolumnModel (). SetHidden (0, true) будет применено для меню столбца а не сетка панели. В меню столбца вы можете включить или отключить столбец. Как динамически добавить или удалить столбец на панели сетки?

Ответы [ 6 ]

6 голосов
/ 06 мая 2010

Я думаю, это то, что вы ищете http://www.extjs.com/forum/showthread.php?53009-Adding-removing-fields-and-columns

Убедитесь, что вы смотрите на пост № 37 в ветке.

1 голос
/ 11 мая 2015

Для тех, кто достигает этого вопроса, ищет решение для 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/dynamically-changing-the-structure-of-a-grid-in-extjs-4-2/

0 голосов
/ 05 июля 2017

может быть попробовать

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

или store.remove () и store.commitChanges ()

0 голосов
/ 04 июля 2017

Функция 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();
0 голосов
/ 01 мая 2013

В 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);
0 голосов
/ 06 мая 2010

Возможно, вам придется обновить Ext.grid.GridView, чтобы отобразилось изменение столбца.

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