ExtJs 4.2和ExtJs 6.2之间的gridviewdragdrop有什么变化

ExtJs 4.2和ExtJs 6.2之间的gridviewdragdrop有什么变化,extjs,drag-and-drop,extjs4,extjs6,extjs-grid,Extjs,Drag And Drop,Extjs4,Extjs6,Extjs Grid,我正在从ExtJs 4.2升级到ExtJs 6.2,在这两者之间,拖放的工作方式发生了一些变化 在ExtJs 4.2中,我在网格中简单地使用了它: Ext.define('App.view.images.List', { extend: 'Ext.grid.Panel', viewConfig: { plugins: { ptype: 'gridviewdragdrop', containerScroll: true

我正在从ExtJs 4.2升级到ExtJs 6.2,在这两者之间,拖放的工作方式发生了一些变化

在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'
    }],
使用extjs4.2,我不需要对
drop
事件执行任何操作来更改记录的顺序。一个简单的拖放改变了线条的顺序。之后我更新了商店中的
位置
字段

在ExtJs 6.2中,拖放不会改变行的顺序。它只触发
拖动
事件,似乎要由事件处理程序中的代码来更改表中记录的顺序和网格中的行


是否有错误,或者这是ExtJs 4和6之间拖放功能的变化?

在ExtJs 6中,排序器配置优先于拖放功能。因此,不再可能仅使用拖放功能使用分拣机对网格进行重新排序

尝试对已排序的网格重新排序时,将触发
drop
事件并接收预期数据,但网格不会重新排序。我们必须更改存储在
drop
-处理程序中排序的属性。然后,视图将根据新数据进行更新

换言之:

  • 在ExtJS4中,拖放可以直观地重新排序网格,我们必须更新存储以反映顺序的变化(更新存储排序所依据的属性)
  • 在ExtJs 6中,如果底层存储已排序,则无法通过拖放直观地重新排序网格,因为排序器优先于拖放所施加的顺序。要对网格进行重新排序,我们必须在
    drop
    处理程序中更新存储排序所依据的属性