2017-02-17 71 views
0

我正在从ExtJs 4.2升级到ExtJs 6.2,并且在如何拖放工作方面发生了变化。ExtJs 4.2和ExtJs 6.2之间gridviewdragdrop发生了什么变化

在ExtJS的4.2,我曾在一个格子一个简单的使用它:

Ext.define('App.view.images.List', { 
    extend: 'Ext.grid.Panel', 
    viewConfig: { 
     plugins: { 
      ptype: 'gridviewdragdrop', 
      containerScroll: true 
     }, 
     enableTextSelection : true 
    }, 

有可能是重要的一个细节:该店下令:

Ext.define('App.store.images.Images', { 
    extend: 'Ext.data.Store', 
    sorters: [{ 
     property: 'position' 
    }], 

随着ExtJS的4.2,为了更改记录的顺序,我不需要对drop事件做任何事情。简单的拖放操作改变了线条的顺序。之后我更新了商店中的position字段。

使用ExtJs 6.2时,拖放操作不会改变行的顺序。它只触发drag事件,并且它看起来取决于事件处理程序中的代码,以更改表中记录的顺序和网格中的行。

ExtJs 4和6之间是否存在错误,或者这是否改变了拖放功能?

回答

0

我看起来好像在ExtJs 6中,分拣机配置优先于拖放。因此,仅使用拖放操作就不能再使用分拣机对网格进行重新排序。

当尝试重新排序已排序的网格时,会触发drop事件并接收预期的数据,但网格不会重新排序。我们必须更改drop-处理程序中商店所属的物业。该视图将根据新数据进行更新。

换句话说:

  • 在ExtJs的4,拖放重新排序网格视觉,我们必须更新商店以反映顺序的变化(更新存储上排序的属性)。
  • 在ExtJs 6中,如果基础商店被排序,则不可能通过拖放对网格进行可视化重新排序,因为排序器优先于拖放所施加的顺序。要重新排序网格,我们必须在drop处理程序中更新商店的排序属性。