2012-01-16 4 views
0

私はExtJS4を使用している問題に直面しています。ExtJS4:ツリーからパネルにドラッグ

私のアプリケーションには、従業員を表す文字列を含むツリーがあります。
このツリーの中で、ドラッグ&のドロップはうまく動作します。
これで、従業員をドラッグして削除できるパネルを作成しようとしています。

私はExtJSに新しいExt.dd.DDTargetを作成させ、必要に応じてdragzoneを定義します(これは、有効な目標として認識されるため動作します)...しかし、従業員を削除すると、 何も起こりません。私はちょうどそれを使用するリスナーと正確にそれを使用する場所を把握することができません...

そして私は実際に私のコードのどの部分を私はこの質問を投稿する必要があります:

var trashDDTarget = Ext.create('Ext.dd.DDTarget', 'trashTarget', 'trashDrag'); 

:D)...ので、私はちょうど:-)だからここ

は私DDTargetです...私は何かが欠けている場合、私はこの記事を投稿し、編集すべきだと思うものを投稿します'trashTarget'はパネル(以下)、 'trashDrag'はドラッググループの名前です。

targetPanel:

var trashPanel = Ext.create('Ext.panel.Panel', { 
title: 'Trash!', 
id: 'trashTarget', 
width: 400, 
height: 150, 
renderTo: 'trash', 
bodyStyle: 'background-image: url(/images/trash_can.png) !important' 
}); 

そしてこれは、この問題を解決するために、私のアイデアの一つです:いくつかのリスナーをオーバーライド

Ext.override(Ext.dd.DDTarget, { 
onDragDrop : function(evtObj, targetElId) { 
    console.log(evtObj); 
}, 
onInvalidDrop: function(evt) { 
    console.log(evt); 
} 
}); 

。それは動作しません。
私は事前に

おかげ
gilaras

:-) ...私はあなたを混乱させ、多分誰かが私を助けることができることを願っていませんでした------------ ---------------- UPDATE:

私はその上にアイテムをドラッグすると、それは木から消える... gridpanelに
をパネルを変更しました。 ..
...しかし、ドキュメントで指定されたイベントは発生していないようです...
私の新しいパネルは次のようになります。

var trashPanel = Ext.create('Ext.grid.Panel', { 
title: 'Trash!', 
id: 'trashTarget', 
width: 400, 
viewConfig: { 
    plugins: { 
    ptype: 'gridviewdragdrop', 
    dropGroup: 'trashDrag', 
    dragGroup: 'trashDrag', 
    dragText: 'In den Papierkorb ziehen, um zu löschen...' 
    } 
}, 
height: 150, 
renderTo: 'trash', 
columns:[ 
    { 
    hidden: true 
    } 
], 

bodyStyle: 'background-image: url(/images/trash_can.png) !important' 
}); 

しかし、どういうわけか、これは大丈夫、私は
;-)私は解決策を見つけたと思いますどちらか...

+0

まあ、それはデルを続けていますeting my "hi everyone :-)"、それで想像してみてください。:-P – gilaras

+0

それは解決しましたが、私はまだ私の解決策を投稿することはできません。それはしばらくしてから;-) – gilaras

答えて

1

フム動作しません。 D
私の解決方法はここに掲載しますので、いつか誰かがこのトピックのヘルプを求めているかもしれません:-)

私の問題それについての私の考えで間違っていた点)は、私はイベントをキャッチする場所を知っている...

var trashPanel = Ext.create('Ext.grid.Panel', { 
title: 'Trash!', 
id: 'trashTarget', 
width: 400, 
viewConfig: { 
    plugins: { 
    ptype: 'gridviewdragdrop', 
    dropGroup: 'trashDrag', 
    dragGroup: 'trashDrag', 
    dragText: 'In den Papierkorb ziehen, um zu löschen...' 
    }, 
    listeners: { 
    drop: function(node, data, overModel, dropPosition) { 
     console.log('Mitarbeiter mit ID ' + data.records[0].internalId + ' gedropt!'); 
     var antwort = function(btn){ 
     if(btn.indexOf('no') != -1){ 
      treeStore.load(); 
     } else { 
      Ext.Ajax.request({ 
       url: '/app/loeschenPage', 
       params: 
       { 
       id: data.records[0].internalId 
       }, 
       method: 'GET', 
       success: function() { 
       Ext.MessageBox.alert("Und tschüss...", "Mitarbeiter erfolgreich aus der Datenbank gelöscht."); 
       treeStore.load(); 
       } 
      }); 
     } 
     }; 
     Ext.MessageBox.confirm('Wirklich löschen?', 'Soll der Mitarbeiter WIRKLICH FUER IMMER geloescht werden? Das ist eine sehr lange Zeit...', antwort); 

    } 
    } 
}, 
height: 150, 
renderTo: 'trash', 
columns:[ 
    { 
    hidden: true 
    } 
], 

bodyStyle: 'background-image: url(/images/trash_can.png) !important' 
}); 

おかげでとにかく、本当に私の問題を書き留めることは、私はについて考える助け:

:-) gridpanelのviewConfigでそれをキャッチするとき、または少なくとも今はそうここに私の新しいパネルですが、動作しますあなたはviewConfigにプロパティを設定する必要があり、ツリーからデータを削除しないようにするに

0

:-)異なる方法でそれを:

viewConfig:{ copy: true; }