ページの Container AにExtJS ツリーパネルがあり、別のContainer Bがあります。
ツリーパネルは、Ajax 呼び出しを介してアイテムで初期化されます。viewConfig
ツリーパネルの に、追加itemadd
した項目を DragSource として登録するイベント リスナーを追加しました。以下は、treepanelitemadd
内のイベント リスナーです。viewConfig
'itemadd': function(records, node){
// Iterate over each child record of parent node in treepanel.
Ext.each(records, function(record){
var dragSource,
field,
fieldId;
field = Ext.query('[id='+record.data.listId+']')[0]; // I've manually added 'listId' which has unique value gained from Ext.id() for each record item.
fieldId = field.id;
dragSource = new Ext.dd.DragSource(field, {
isTarget : false
});
dragSource.dragData = {
record: record
};
});
}
Container Bのアイテムには、内部MyView
に拡張するという名前の View を追加しました。Ext.container.Container
そのためafterrender
、コンテナ Bで、自分自身を として登録していDropTarget
ます。これが私がそれを行う方法です。
'afterrender': function(containerMain) {
var dropZone,
myView = Ext.ComponentQuery.query("myview")[0];
dropZone = new Ext.dd.DropTarget(containerMain.getEl()); // Register Container B as DropTarget.
dropZone.notifyDrop = function(source, event, params) {
myView.doSomething(params.record); // This method will handle data of dropped record and internally show something on UI.
};
}
ここで、ステップバイステップの使用法で説明されている問題があります。
- 初めてツリーパネルからコンテナ B に項目をドラッグすると、意図したとおりに正常に動作します。
- 重複したアイテムを に再度追加することはできません
MyView
。追加された各アイテムには、MyView から削除するための [削除] ボタンがあります。
- 重複したアイテムを に再度追加することはできません
- 追加した項目を削除します。
- treepanel から再度ドラッグしようとしましたが、ドラッグ可能なアイテムではなくなりました。
- 同じツリーパネルから別のアイテムをドラッグして追加することはできますが、以前に追加して削除した最初のアイテムはできません (一度追加したすべてのアイテムで同じことが起こり
MyView
ます。再現するためにアイテムを削除する必要はないことに注意してください)。問題、それを追加するだけでこれが発生します。
- 同じツリーパネルから別のアイテムをドラッグして追加することはできますが、以前に追加して削除した最初のアイテムはできません (一度追加したすべてのアイテムで同じことが起こり
では、ここで何が間違っているのでしょうか?
どんな助けでも素晴らしいでしょう。