2017-02-17 72 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處理程序中更新商店的排序屬性。