2010-05-04 68 views
6

grid.getcolumnModel().setHidden(0,true)将对列菜单 生效,而不是网格面板。在列菜单中,您可以启用或禁用列。我们如何动态添加或删除网格面板中的列?如何在网格面板中删除或添加列

回答

0

您可能需要刷新Ext.grid.GridView才能显示列更改。

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

在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

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

也许尝试

store.add(新纪录); store.commitChanges();

或store.remove()和store.commitChanges()