ExtJS 6网格不会正确更新/刷新列标题

时间:2016-02-10 14:12:56

标签: javascript jquery extjs state extjs6

我有一个基本的ExtJS网格面板,我可以动态应用自定义状态。使用另一个控件,如组合框或其他网格,我的应用程序在网格上应用选定的状态。这种状态的一个例子:

{
"height": 384,
"columns": [{
    "id": "h107"
},
{
    "id": "h1",
    "width": 30
},
{
    "id": "unplannedtasks_ActualEndDate",
    "hidden": true,
    "width": 100
},
{
    "id": "unplannedtasks_ActualNoResources",
    "hidden": true,
    "width": 100
},
{
    "id": "unplannedtasks_ActualResponseDateTime",
    "hidden": true
},
{
    "id": "unplannedtasks_ActualTotalDurationInSeconds",
    "width": 100
},  
"filters": []
}

这是网格声明的相应列部分:

Ext.define('Ext.grid.Stateful', {
  extend: 'Ext.grid.Panel',  
  stateEvents: ['columnmove', 'columnresize', 'sortchange', 'hiddenchange', 'groupchange', 'show', 'hide'],
  // CODE OMMITTED FOR BREVITY
 initComponent: function () {
    Ext.apply(this, {
       columns: [
             filterAction,
             new columns.tasks.ActualEndDate({ id: 'unplannedtasks_ActualEndDate', hidden: false }),
             new columns.tasks.ActualNoResources({ id: 'unplannedtasks_ActualResponseDateTime', hidden: false },
             new columns.tasks.ActualResponseDateTime({ id: 'unplannedtasks_ActualResponseDateTime', hidden: false },
             new columns.tasks.ActualTotalDurationInSeconds({ id: 'unplannedtasks_ActualTotalDurationInSeconds', hidden: false }
         ]
   });
 }       

})

列定义的示例:

 Ext.define("columns.tasks.ActualNoResources", {
  extend: "Ext.grid.column.Column",
  text: 'ActualNoResources',   
  dataIndex: 'ActualNoResources',  
  editor: {
    allowBlank: false
  }, filterable: true,
  filter: {
    type: 'string'
  }
});

除了列标题似乎没有正确刷新之外,一切都按预期进行。如果我打开网格中的列面板,它会显示正确数量的可见和隐藏列。过滤器的相同故事:如果状态中有过滤器,则会在正确的字段上应用正确的值。好像列标题需要以某种方式刷新。

我尝试使用grid.getView()。refresh(),但这不起作用。相反,如果我调整网格大小,它会刷新隐藏的列,但不刷新最初隐藏但现在可见的列。

我想我错过了一个属于网格的applyState方法的简单代码行,因此我可以命令网格使用新状态而不是先前或初始状态刷新网格。

关于如何解决这个问题的任何想法?

1 个答案:

答案 0 :(得分:0)

事实证明,我追求的场景不可能与ExtJS一起开箱即用。我问的只能在启动期间完成(没有开发人员的自定义代码干预)所以我不得不退出这种方法并提供自定义代码。最后,我不得不重建列,然后将该集合传递给网格的重新配置(存储,列)方法。