2011-10-17 116 views
0

我有2個網格拖放啓用。extjs4 - 過濾網格拖放

在其中一個網格上,我需要檢查掉落的元素並過濾掉其中的一些元素。

我不能完全弄清楚如何做到這一點。網格dd插件有2個事件:beforedrop和drop。

在beforedrop事件期間,我可以檢查每個丟棄的記錄是否正常,但沒有明顯的方法來選擇要丟棄的記錄的子集。 我似乎有的唯一選擇是如果我想完全取消刪除而返回false,而我只想刪除選定的記錄子集。

放置事件看起來太遲了。

任何想法我可以做到這一點?

回答

2

好的,我發現了一個解決方法的問題。

這個想法是取代記錄屬性數據參數在beforedrop。

(該記錄財產基本上是模型的陣列/記錄對電網下降)

因此,與電網這個例子配置:

viewConfig: { 
    plugins: { 
     dropGroup: 'items', 
     ptype: 'gridviewdragdrop' 
    }, 
    listeners: { 
     beforedrop: this.onBeforeDropItem, 
     scope:this 
    } 

} 

爲beforedrop處理程序看起來像這樣的:

,onBeforeDropItem: function(node, data, overModel, dropPosition, dropFunction, options) 
{ 

    var final_records = []; 
    nrecords = data.records.length; 
    for(var i=0;i<nrecords;i++) 
    { 
     var record = data.records[i]; 
     if (/* your condition goes here */) 
     { 
      final_records.push(record); 
     } 
    } 
    data.records = final_records; 
} 

(在我的情況下,條件是測試如果記錄已經在我的本地電網商店,但可以b e其他任何東西)

也許我正在重新發明輪子。有沒有人有更好的解決方案?